用javascript在手机上显示虚拟键盘

Ada*_*dam 37 javascript jquery jquery-mobile

我正在创建我的网站的移动版本.网站的一部分会弹出一个带有文本输入的对话框.通常我会使用jQuery将焦点带到文本输入,但这不起作用.这是我正在尝试的:

$("#textinput").focus();
$("#textinput").click(); 
$("#textinput").trigger("tap"); //jQuery Mobile
Run Code Online (Sandbox Code Playgroud)

他们似乎都没有工作.有任何想法吗?我一直在我的DroidX上测试它.我正在使用jQuery Mobile,但如果他们有帮助,我会对其他图书馆开放.

Mar*_*ahn 46

你不能,至少不在iOS(iPhone),我也相信Android.这是一个可用性问题,除了用户输入之外不应该允许触发键盘(如果它是自动的,它只是令人讨厌).

我知道有几种方法来解决这个问题:

  • prompt() 打开键盘
  • 如果.focus().click()事件中触发from (例如,打开对话框),键盘会显示

  • 啊,有道理。理论上,从他们的角度来看,只有当用户出于可用性原因将焦点集中到某个元素时,键盘才应该打开。但是,如果输入是屏幕上唯一的内容,并且出于可用性原因,我想自动将焦点移到该元素上,则键盘不会弹出。无论如何,感谢您的帮助。 (2认同)
  • 一个巨大的警告是,必须是一个"点击"事件.即使`tap`和`click`基本相同,它也必须是`click`事件,否则它将无法打开 (2认同)
  • 你能详细说明`prompt()`方法吗?当你无法在"click"事件中触发"焦点"时,它可以用作解决方法吗? (2认同)
  • @PetrPeller - 他正在访问window.prompt(),它会显示一个弹出对话框,提示访问者输入.它显示键盘以及弹出对话框,因此您不能简单地将其用于表单输入.[链接](http://www.w3schools.com/jsref/met_win_prompt.asp) (2认同)

小智 21

$( "#的TextInput")专注().

通过将焦点设置为输入元素来打开键盘,只有在"用户上下文"(例如,单击,mousedown,mouseup)中设置焦点时才会起作用.

从"脚本上下文"(setTimeout,从ajax调用返回的回调),键盘将不会显示.