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

IT技术 javascript jquery jquery-mobile
2021-02-11 15:18:38

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

$("#textinput").focus();
$("#textinput").click(); 
$("#textinput").trigger("tap"); //jQuery Mobile

它们似乎都不起作用。有任何想法吗?我一直在我的 DroidX 上测试它。我正在使用 jQuery Mobile,但如果其他库有帮助,我也愿意接受。

3个回答

你不能,至少在 iOS (iPhone) 中不能,我相信 Android 也是如此。这是一个可用性问题,除了用户输入之外,不应允许键盘被触发(如果它是自动的,那就很烦人了)。

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

  • prompt() 打开键盘
  • 如果您.focus().click()事件中触发(例如从打开对话框),键盘会显示
能详细说说prompt()方法吗?当您无法focusclick事件中触发时,它可以用作解决方法吗?
2021-03-20 15:18:38
但是为什么哦,为什么从键盘事件中触发 .focus()不起作用?
2021-03-24 15:18:38
一个巨大的警告是这必须是一个click事件。即使tapclick基本相同,它必须是一个click事件,否则它不会打开
2021-03-30 15:18:38
啊,有道理。从理论上讲,从他们的角度来看,只有当用户出于可用性原因将注意力集中在某个元素上时,键盘才应打开是有道理的。然而,在输入是屏幕上唯一的情况下,出于可用性原因,我想自动将焦点放在该元素上,键盘不会弹出。无论如何,感谢您的帮助。
2021-04-01 15:18:38
@PetrPeller——他指的是 window.prompt() 显示一个弹出对话框,提示访问者输入。它显示键盘和弹出对话框,所以你不能简单地将它用于表单输入。关联
2021-04-10 15:18:38

$("#textinput").focus();

通过将焦点设置到输入元素来打开键盘,只有在“用户上下文”(例如单击、鼠标按下、鼠标向上)内设置焦点时才有效。

从“脚本上下文”(setTimeout,从 ajax 调用返回的回调)中,键盘不会出现。

您可以使用:

$(textFiled).trigger("focus");

您可以将此代码放在某个函数中,该函数将在打开某些叠加层或文档准备好时触发。