我正在编写一个iPhone网络应用程序,我想在页面加载时自动聚焦文本字段,然后调出键盘。通常的Javascript:
input.focus();
似乎没有用。有什么想法吗?
答案 0 :(得分:18)
如果您从点击事件中激活焦点,它将仅显示键盘,因此在页面上放置一个按钮,其中onclick会执行焦点并显示键盘。完全没用,除了验证(点击提交验证码专注于无效元素)
答案 1 :(得分:6)
编辑:以下内容不再适用于iOS - UIWebView确实允许自动对焦和主屏幕链接用于自动对焦,但他们在很多版本之前禁用了它。
autofocus
(见下文)属性在Mobile Safari中的网址无效,但如果您有以下情况,则可以使用:
输入的字体大小必须足够大以避免iOS10缩放双击(现在视口始终可缩放)并设计要调整大小的页面以使其适合屏幕(否则在页面上加载你在缩放时获得奇怪的时间/种族错误,或者如果可滚动,该字段有时不会正确地居中于屏幕。)
autofocus
:执行此操作的HTML5规范是autofocus property of the input tag。但iOS忽略了这一点,大概是为了在导航到页面时没有弹出触摸键盘的更干净的UI。 Here是一个演示自动对焦属性的页面。在HTML5之前,您将在window.onload事件中调用element.focus()。但是,除了在onclick事件的处理程序中,iOS上不支持focus()调用。
答案 2 :(得分:3)
注意:这个答案很旧,可能与那里的新版本无关......
<小时/> 它对你没有帮助,但是this线程中的最后一张海报写道它是webkit引擎的一个bug。
way back machine的最后一篇文章(原文似乎不起作用):
我正在使用纯XHTML MP / Ecmascript MP / WCSS开发我的应用程序。所以 使用本机平台浏览器控件api实际上不是一个选项 我。是的,你提到的行为与我的相同。我搜查了他的 在webkit.org的bugzilla中的主题,发现这确实是一个 报告错误。 focus()到文本框会突出显示元素但是 不为其提供克拉以供用户开始输入文字。 使用“peppe@peppe.net”中提到的计时器也无济于事。
这种行为在平台(s60,iphone,android)上很常见 使用webkit引擎。
到目前为止,我没有看到解决这个问题的方法。
希望这有帮助
答案 3 :(得分:2)
我有一个类似的问题,只有我的问题是焦点不会发生在'touchend'事件上。
http://jsfiddle.net/milosdakic/FNVm5/
以下代码适用于Chrome / Safari等,但在Mobile Safari上会失败。让它发挥作用的唯一方法是在“点击”上进行活动,但看到代码是为iOS设备制作的,它可以使用触摸事件。
这似乎是Webkit引擎的一个错误。
答案 4 :(得分:1)
如果您要通过点击事件设置焦点,则需要使用preventDefault,否则点击事件默认操作会将焦点设置在所点击的项目上。
答案 5 :(得分:0)
可能有点晚了,但也许对于未来的人。在我们在iOS iPad(6及更新版本)上运行的webapp中,我们按设定的间隔进行操作:
startFocusOnTextField: function() {
this.intervalIDForTextFieldFocus = window.setInterval(function() {
document.getElementById(page.textInputFieldObj.id).focus();
}, 150);
},
在页面加载(jQuery移动环境)上调用
答案 6 :(得分:-4)
这是一个工作场所:
setTimeout(function(){
input.focus();
},500);//milliseconds