Javascript 模式 onclick 在移动设备上不起作用
Javascript modal onclick not working on mobile
问题出在移动设备上,点击背景时模态框没有关闭,我试过点击和点击 touchstart none 其中 worked.I 没有将下拉菜单放在模态框内,因为这是 header.I 我在 safari 上尝试这个的一部分。
html部分:
<div class="dropdown">
<button class="dropbtn" onclick="showloc()" ><i class="zmdi zmdi-gps-dot" style="color:#555;margin-right:6px;"></i>Location
<i class="zmdi zmdi-chevron-down" style="color:#555;"></i>
</br>
<?php echo $locality; ?>
</button>
<div class="dropdown-content">
<h3>Where do you want the delivery?</h3>
<form class="locform" action="/action_page.php" autocomplete="off">
<input type="text" id="fname" name="firstname" placeholder="Enter your delivery location">
</form>
</div>
</div>
<div id="myModal" class="modal"></div>
javascript代码:
var modal = document.getElementsByClassName('modal')[0];
var dc=document.getElementsByClassName('dropdown-content')[0];
function showloc(){
if(dc.style.display == "none"){
dc.style.display = "block";
modal.style.display="block";
}
else{
dc.style.display = "none";
modal.style.display="none";
}
}
window.addEventListener('click',function(){
if(event.target == modal){
modal.style.display="none";
dc.style.display="none";
}
});
样式部分:
.modal {
display:block;
position: fixed;
z-index: 1;
padding-top: 50px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown .dropbtn {
color: #555;
text-decoration: none;
padding: 15px 20px;
margin-top:3px;
position: relative;
display: inline-block;
float:right;
font-size:17px;
}
.dropdown .dropdown-content {
display: block;
position: absolute;
background-color: white;
min-width: 400px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 70;
text-align: center;
padding:20px;
margin-top:70px;
}
'click' 事件不会触发移动设备上的侦听器,因为没有点击。
你应该试试“touchend”。如果我是你,我会为 click 添加一个事件监听器,为 touchend 添加一个事件监听器,这样它就可以在移动设备和桌面设备上运行。
问题出在移动设备上,点击背景时模态框没有关闭,我试过点击和点击 touchstart none 其中 worked.I 没有将下拉菜单放在模态框内,因为这是 header.I 我在 safari 上尝试这个的一部分。
html部分:
<div class="dropdown">
<button class="dropbtn" onclick="showloc()" ><i class="zmdi zmdi-gps-dot" style="color:#555;margin-right:6px;"></i>Location
<i class="zmdi zmdi-chevron-down" style="color:#555;"></i>
</br>
<?php echo $locality; ?>
</button>
<div class="dropdown-content">
<h3>Where do you want the delivery?</h3>
<form class="locform" action="/action_page.php" autocomplete="off">
<input type="text" id="fname" name="firstname" placeholder="Enter your delivery location">
</form>
</div>
</div>
<div id="myModal" class="modal"></div>
javascript代码:
var modal = document.getElementsByClassName('modal')[0];
var dc=document.getElementsByClassName('dropdown-content')[0];
function showloc(){
if(dc.style.display == "none"){
dc.style.display = "block";
modal.style.display="block";
}
else{
dc.style.display = "none";
modal.style.display="none";
}
}
window.addEventListener('click',function(){
if(event.target == modal){
modal.style.display="none";
dc.style.display="none";
}
});
样式部分:
.modal {
display:block;
position: fixed;
z-index: 1;
padding-top: 50px;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgb(0,0,0);
background-color: rgba(0,0,0,0.4);
}
.dropdown {
float: left;
overflow: hidden;
}
.dropdown .dropbtn {
color: #555;
text-decoration: none;
padding: 15px 20px;
margin-top:3px;
position: relative;
display: inline-block;
float:right;
font-size:17px;
}
.dropdown .dropdown-content {
display: block;
position: absolute;
background-color: white;
min-width: 400px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 70;
text-align: center;
padding:20px;
margin-top:70px;
}
'click' 事件不会触发移动设备上的侦听器,因为没有点击。
你应该试试“touchend”。如果我是你,我会为 click 添加一个事件监听器,为 touchend 添加一个事件监听器,这样它就可以在移动设备和桌面设备上运行。