【发布时间】:2013-10-08 10:47:25
【问题描述】:
当在移动浏览器中关注文本 input(在 iOS Safari 和 Chrome 上测试)时,文本插入符号会出现在任何位于顶部的 divs 的顶部。
这是一个简单的快速示例:http://jsfiddle.net/XQf8N/
下面是效果截图:
解决此问题的最佳方法是什么?
我在这里尝试了答案:JQuery Mobile: focused input text doesn't respect z-index, appearing above everything else,但没有奏效。
更新经过更多挖掘后,我还尝试在切换菜单 div 时执行 $("input").blur();,但这似乎在移动设备上也不起作用,它确实消除了对不过桌面。
更新 2 可能与此有关:iPad Safari does not fire blur event,尽管如果我在 setTimeout 中模糊文本框,而不是在事件侦听器中,文本框确实会成功模糊。看到这个小提琴:http://jsfiddle.net/XQf8N/17/
更新 3 尝试将输入传递给隐藏的文本框似乎也不起作用http://jsfiddle.net/XQf8N/23/
更新 4 意识到我没有按照建议隐藏光标 - http://jsfiddle.net/XQf8N/24/ - 这只是在将鼠标悬停在文本框上时隐藏了鼠标指针,对插入符号没有任何作用
UPDATE 5建议禁用文本框,这不会失去焦点也不会关闭键盘http://jsfiddle.net/XQf8N/27/
更新 6 此解决方案:https://stackoverflow.com/a/7761438/1061602 在事件侦听器中不起作用,请参阅小提琴:http://jsfiddle.net/XQf8N/29/
更新 7 此解决方案:https://stackoverflow.com/a/6473076/1061602 也不起作用,与禁用文本框的结果相同
更新 8 模糊使用敲除绑定的函数中的文本框:http://jsfiddle.net/XQf8N/33/
任何想法原始事件侦听器有什么问题?希望此故障排除对遇到相同问题的人有所帮助。
【问题讨论】:
-
也许改变css中的光标。 (w3schools.com/cssref/pr_class_cursor.asp)
-
当用户点击菜单时,为什么不触发
.blur(),而不是触发.focus()? -
很好的建议,但它不起作用
-
您是否尝试在单击菜单时在输入字段上设置
disabled属性?相当脏,但它应该可以工作。 -
您希望如此,但事实并非如此。在 iPad 上,键盘保持打开状态,插入符号保持不变。禁用确实有效,即如果您随后手动关闭键盘,插入符号会消失,现在您无法再次选择文本框,因为它已被禁用。
标签: html css mobile input z-index