【问题标题】:Show virtual keyboard on mobile phones in javascript在 javascript 中显示手机上的虚拟键盘
【发布时间】:2011-10-13 19:57:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊,有道理。从理论上讲,从他们的角度来看,只有当用户出于可用性原因将焦点放在某个元素上时,键盘才应该打开。但是,如果输入是屏幕上唯一的东西,并且出于可用性原因,我想自动将焦点放在该元素上,键盘不会弹出。无论如何,感谢您的帮助。
    • 一个巨大的警告是必须是click 事件。虽然tapclick基本一样,但必须是click事件,否则打不开
    • 但是为什么从 keyboard 事件中触发 .focus() 不起作用?
    • 你能详细说明prompt()的方法吗?当您无法从 click 事件中触发 focus 时,它可以用作解决方法吗?
    • @PetrPeller -- 他指的是 window.prompt() ,它显示一个弹出对话框,提示访问者输入。它显示键盘,但也显示弹出对话框,所以你不能简单地将它用于表单输入。 link
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      你可以使用:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-09
        • 2017-07-16
        • 1970-01-01
        • 2023-02-02
        • 2014-07-03
        • 2015-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多