如何将HTML文本字段集中在iPhone上(导致键盘出现)?

时间:2009-06-11 04:21:21

标签: javascript iphone html

我正在编写一个iPhone网络应用程序,我想在页面加载时自动聚焦文本字段,然后调出键盘。通常的Javascript:

input.focus();

似乎没有用。有什么想法吗?

7 个答案:

答案 0 :(得分:18)

如果您从点击事件中激活焦点,它将仅显示键盘,因此在页面上放置一个按钮,其中onclick会执行焦点并显示键盘。完全没用,除了验证(点击提交验证码专注于无效元素)

答案 1 :(得分:6)

编辑:以下内容不再适用于iOS - UIWebView确实允许自动对焦和主屏幕链接用于自动对焦,但他们在很多版本之前禁用了它。

autofocus(见下文)属性在Mobile Safari中的网址无效,但如果您有以下情况,则可以使用:

  1. 使用UIWebView
  2. 使用主屏幕链接
  3. 输入的字体大小必须足够大以避免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