我正在使用这个 HTML 代码:
<form action="#" method="post">
<fieldset>
<label class="desc" id="title10" for="Field10">
How many children do you have?
</label>
<select id="Field10" name="Field10" class="field select large" tabindex="5">
<option value="0" selected="selected">0 </option>
<option value="1">1 </option>
<option value="2">2 </option>
<option value="3">3 </option>
<option value="4">4 </option>
<option value="5">5 </option>
<option value="6">6 </option>
<option value="7">7 </option>
<option value="8">8 </option>
<option value="9">9 </option>
</select>
<input type="submit" value="Send message" />
</fieldset>
</form>
<select>
不适用于 iPhone 和 Android。当我点击选择框时,什么也没有发生。
我正在使用 iScroll 4,它造成了问题。
<script type="application/javascript" src="iscroll-lite.js"></script>
<script type="text/javascript">
var myScroll;
function loaded() {
myScroll = new iScroll('wrapper');
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);
</script>
I think 这是一个解决方案但我不知道如何实现它。
问题是 iScroll 取消了你的默认行为select
标签(如果你问我的话,这不是一个很好的实现)。
这发生在_start()
第 195 行的函数:
e.preventDefault();
如果你注释掉你会注意到select
标签再次起作用。
但将其注释掉意味着您已经破解了该库,这可能会破坏其他所需的 iScroll 功能。所以这里有一个更好的解决方法:
var selectField = document.getElementById('Field10');
selectField.addEventListener('touchstart' /*'mousedown'*/, function(e) {
e.stopPropagation();
}, false);
该代码将允许发生默认行为,而不会将事件传播到 iScroll,从而搞砸一切。
因为你的 JS 不在任何类似 jQuery 的内部onReady()
事件,您必须确保输入此代码AFTERHTML 所在位置select
元素被定义。
请注意,对于移动设备,该事件是touchstart
,但对于您的 PC 浏览器来说,它将是mousedown
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)