在 iOS Safari 中模拟/触发选择框(可能带有触摸端)
Simulate/trigger select box in iOS Safari (perhaps with a touchend)
我有一个
<input type="button" id="sf" value="Select field">
和
<select id="rsf"><option value="something">Something</option><option... ... </select>
选择框与 visibility:hidden
一起隐藏,因此不可见。(它实际上是在按钮后面)
因此,当我单击该按钮时,我希望打开本机选择框,其中包含可供选择的不同可能性。可能性将是可见的,但选择框本身仍然是隐藏的。
它使用以下代码在桌面上工作:
$('#sf').on('touchend click', function() {
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
$('#rsf')[0].dispatchEvent(e);
});
我对document.createTouch
和随之而来的所有内容(如e.initTouchEvent
)都尝试了类似的方法......但没有任何运气....有人有解决方案吗?我想要这种方式的原因是因为我想在iOS中触发本机选择框UI。(或移动设备上的任何其他操作系统)。
我无法让它那样工作,所以我将选择框的不透明度设为 0,并将其放在按钮后面,并"pointer-events: none"
按钮。 选择框的宽度和高度必须与按钮具有相同的尺寸,因此它还具有-webkit-appearance: none;
和appearance: none;
还必须确保按钮的 z 索引高于选择框。
试试这个:如果你使用的是jquery。
$('#sf').on('touchend click', function() {
jQuery("#rsf").css({"visibility":"visible"});
});
在普通的JavaScript中,你可以试试这个:
function myfunction(){
document.getElementById("rsf").style.visibility='visible'
}
<input type="button" id="sf" value="Select field" onclick="myfunction()">
我设法通过element.focus()
让它工作(在iOS 8,Cordova应用程序中测试)
所以:
$('select').on('touchend', function(ev) { ev.preventDefault(); ev.target.focus(); });
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 按照选项卡索引的顺序循环一个jQuery选择
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 触摸移动时切换到新元素
- Android在触摸选择时获取选定的文本
- 如何防止使用HTML5/Javascript在长触摸/点击时选择画布
- 在 iOS Safari 中模拟/触发选择框(可能带有触摸端)
- Cordova/Phonegap选择框在Android上的软触摸上无法打开
- Sencha触摸Selectfield选择器未显示正确的选择
- Sebcha触摸选择字段加载问题
- 使用jQuery为触摸事件选择区域
- Sencha触摸面板/日期选择器渲染问题
- iPhone选择滚轮导致页面滚动到顶部时,触摸下拉
- 如何在文本框中显示一个值,点击"done"在sencha触摸中选择器字段中的按钮
- 当在文本字段之间选择时,Sencha触摸滚动问题
- 如何在支持触摸的浏览器中选择输入值