Mottie虚拟键盘,隐藏原生Android输入键盘

时间:2013-04-22 10:10:58

标签: javascript jquery css jquery-mobile

我正在尝试使用jquery虚拟键盘 - http://mottie.github.io/Keyboard/mobile.html创建一个仅限数字的输入文本,其中包含一些用于移动Web应用程序的加速键。

但是我遇到了一个巨大的问题,即当我按下输入框触发屏幕/虚拟键盘时,本机安卓键盘会被触发。如何仅触发虚拟键盘,也可以使用其他插件。我测试过一些都有同样问题的人。

也许有一种方法可以禁用输入字段,因此它不会触发本机键盘,但仍会触发屏幕键盘?输入“只读”有一些问题。

我和其他用户有同样的问题:https://stackoverflow.com/questions/15289281/disable-mobile-default-keyboard-to-show-up-using-my-own-virtual-keyboard-web-a但他的问题没有答案。

首次尝试

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">

    <title>Virtual Keyboard Basic Demo</title>

    <!-- demo -->
    <link href="demo/demo.css" rel="stylesheet">

    <!-- jQuery & jQuery UI + theme (required) -->
    <link href="http://code.jquery.com/ui/1.9.0/themes/ui-darkness/jquery-ui.css" rel="stylesheet">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.js"></script>
    <script src="http://code.jquery.com/ui/1.9.0/jquery-ui.min.js"></script>

    <!-- keyboard widget css & script (required) -->
    <link href="css/keyboard.css" rel="stylesheet">
    <script src="js/jquery.keyboard.js"></script>

    <!-- keyboard extensions (optional) -->
    <script src="js/jquery.mousewheel.js"></script>
    <!--
    <script src="js/jquery.keyboard.extension-typing.js"></script>
    <script src="js/jquery.keyboard.extension-autocomplete.js"></script>
    -->

    <!-- initialize keyboard (required) -->
    <script>
        $(function(){
            alert("Keyboard ON");
            //$('#keyboard').keyboard();
            $('#keyboard').on('click tap vclick', function (event) {
                //alert("detected touch");
                event.stopImmediatePropagation();
                event.preventDefault();

                $('#keyboard').keyboard();
            });
        });
    </script>

</head>

<body>

    <!-- Links to other demo pages & docs -->
    <div id="nav">
        <a href="index.html">Main Demo</a>
        <a class="current" href="basic.html">Basic</a>
        <a href="mobile.html">Mobile</a>
        <a href="layouts.html">Layouts</a>
        <a href="navigate.html">Navigate</a>
        <a href="calculator.html">Calculator</a>
        <a class="play" href="http://jsfiddle.net/Mottie/MK947/">Playground</a>
        <a class="git" href="https://github.com/Mottie/Keyboard/wiki">Documentation</a>
        <a class="git" href="http://github.com/Mottie/Keyboard/downloads">Download</a>
        <a class="issue" href="https://github.com/Mottie/Keyboard/issues">Issues</a><br><br>
    </div>
    <!-- End Links -->

    <div id="wrap"> <!-- wrapper only needed to center the input -->

        <!-- keyboard input -->
        <input id="keyboard" type="text">
        <div><p>Static TEST</p></div>

    </div> <!-- End wrapper -->

</body>

3 个答案:

答案 0 :(得分:0)

我添加了以下代码似乎确实有效,但需要进行更多测试才能使其成为一个可靠的解决方法:

$('.keyboard').on('focus click tap vclick', function (event) {
                event.stopImmediatePropagation();
                event.preventDefault();

                $('.keyboard').blur();
            });

答案 1 :(得分:0)

您可以将readonly添加到<input>标记,这将阻止原生键盘显示。虽然记得为桌面用户删除它,这将需要一些从未有趣的设备检测。

答案 2 :(得分:0)

只需使用全局属性<div inputmode="none">,即可获得帮助。 https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode