12

当我关注文本输入时,无法显示 Android 键盘。我在初始化页面的函数中有这个:

jQuery(document).bind('pageshow', function()
{
    jQuery($inputItemReference).focus();
    jQuery($inputItemReference).prompt();
});

$inputItemReference 是一个指向输入文本框的变量。

有人告诉我 prompt() 会显示键盘。但是,事实并非如此。我只得到输入以在页面加载时显示闪烁的光标。如果我想显示键盘,我必须再次点击输入。我希望在页面加载时正确显示键盘。有什么想法吗?谢谢。

4

5 回答 5

6

如果您使用的是 cordova/phonegap,请将其添加到 config.xml:

<preference name="KeyboardDisplayRequiresUserAction" value="false" />
于 2014-08-27T12:24:38.547 回答
1

基于这个答案,在 javascript 中显示手机上的虚拟键盘,这是不可能的。

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

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

prompt()打开键盘.focus()_.click()

于 2013-01-17T01:24:52.487 回答
0

好的,所以我找到了一种在一定程度上做到这一点的方法。在 Android 上的 Chrome 上测试。这是 jsFiddle:http: //jsfiddle.net/Twisty/x0tcr5ph/2/

查询:

$(document).on("pageshow", "#loginDialog", function () {
    // When entering loginDialog
    $("label:first").click();
});
$(function () {
    $("#startBtn").click(function () {
        $.mobile.changePage('#loginDialog', 'pop', true, true);
    });
});

HTML:

<div data-role="page">
    <div data-role="header" data-theme="b">
         <h1>Test Focus onLoad</h1>
    </div>
    <div data-role="content"> <a href="#" id="startBtn" data-role="button">Login</a>
    </div>
</div>
<div id="loginDialog" data-role="dialog">
    <div data-role="header" data-theme="b">
         <h2>Login</h2>
    </div>
    <div data-role="content">
        <form>
            <label for="text1">User</label>
            <input type="text" name="login" id="text1" />
            <label for="text2">Password</label>
            <input type="password" name="pass" id="text2" />
            <button type="submit">Submit</button>
        </form>
        <script>
            $("label:first").click(function() {
                $("#text1").focus();
            });
        </script>
    </div>
</div>

当登录对话框打开时,焦点通过click()事件发送到文本框。它在加载所有元素后执行,focus()确实会调出键盘,因此用户可以立即开始输入。

怀疑可以在页面加载时使用pagecontainerload.

于 2015-02-02T22:57:34.973 回答
0

我在 Cordova 6 for Android 移动应用程序中使用以下过程,并且可以确认它有效:

首先,安装 Cordova 插件键盘。然后您可以分别使用Keyboard.show()和显示和隐藏键盘。keyboard.hide()

你可以这样做来显示键盘:

$("#your_input").click(function () {
    $(this).focus();
    Keyboard.show();
});
于 2016-06-28T10:57:54.723 回答
-2
// Place an empty div at the bottom of your page
<div class="keyboard" style="height: 0">&nbsp;</div>

$("input").click(function () {
    $("#" + this.id).focus();
});
$("input").focus(function () {
    $(".keyboard").css("height", "300");// The height of your keyboard
    window.scrollTo(0, 5000); // Scroll to the bottom of the page
});
$("input").blur(function () {
    $(".keyboard").css("height", "0");
    window.scrollTo(0, 0);
});
于 2015-04-27T03:08:32.080 回答