jQuery - 在移动设备上允许自动显示键盘

时间:2017-01-17 21:51:03

标签: javascript android jquery ios mobile

我有一个Rails应用程序,它有一个封闭的后端。在某些页面上,我想自动选择文本输入,这样我就可以使用外部蓝牙扫描仪扫描条形码而无需每次都用鼠标/触摸屏选择它。这非常适用于非移动设备。但是,在移动设备(主要是平板电脑)上,我希望键盘弹出(因为扫描仪被视为"键盘和#34;由系统)。我知道这可以被iOS阻止,因为它可能很烦人。但是,我想知道:

  1. 我可以在Android和/或Windows平板电脑上自动显示键盘吗?

  2. 在iOS上,我可以更改此默认行为,以便键盘自动显示吗?我可以访问所有需要此行为的设备。

  3. 编辑:我知道我可以使用click事件来显示键盘(现在就是这样)。但是,每次我想要扫描时,我都不想触摸平板电脑。

5 个答案:

答案 0 :(得分:4)

除了使用优秀的prompt()之外,还有一些解决方法。

  1. 将Web应用程序包装到Phonegap并执行the following way
  2. 请记住,蓝牙扫描程序需要首次点击才能收听keyboard事件,您可以稍微更改js代码以手动执行首次点击(例如全屏textarea),然后处理扫描器。它可以是textarea,在第一次点击后立即隐藏,所有内容都在javascript完成,而无法查看textarea。
  3. 看起来Windows智能手机可以帮助您,无法找到有关问题的任何问题。
  4. 我已经在Chrome56中使用Windows 8.1,Windows10和诺基亚Lumia的旧版Windows Mobile 8.1测试了autofocus fiddle。在前两种情况下,它会在聚焦后听键盘。后者没有。

    奖金。采用Android 4.4的HTC One M8仿真器无需点击即可聆听键盘。使用 browserstack 服务进​​行测试。如果有一些Android示例而不需要点击怎么办?

    Bonus2 - autodetect scanner library

答案 1 :(得分:3)

基于thoses answers,你必须尝试一些解决方法

  

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

     

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

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

在您打开网页的情况下?

至少这个JS fiddle可以帮助您或this one

答案 2 :(得分:3)

您可以在内置函数中使用JavaScript进行事件处理,例如focus(),prompt()以启动条形码扫描功能。在这种情况下,改变一些可用性也会有所帮助。要构建混合应用程序,请尝试在https://github.com/cjpearson/cordova-plugin-keyboard

上阅读Cordova Keyboard Plugin

快乐编码。

答案 3 :(得分:1)

尝试以下代码。它可能会起作用

// div is some selected element
            var f = function(event) {
                $timeout(function() { // angular way, setTimeout is OK
                    input[0].focus();
                    event.preventDefault();
                })
            };
            var mobile = false;
            div.on('click', function(event) {
                if(mobile) return;
                f(event);
            });

            div.on('touchstart', function(event) {
                mobile = true;
                f(event);
            });

            div.on('touchend', function(event) {
                event.preventDefault();
                event.stopPropagation();
            });

答案 4 :(得分:-1)

我最好的选择是使用offsite input并专注于那里。它将帮助您控制 -

  1. 键盘外观的时间(setTimeOut)
  2. 检查并重新打开键盘
  3. 你需要做这样的事情 -

    <input type="text" style="visibility: hidden; position: fixed; left: -200px" >
    

    使用jQuery -

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

    这在iOS / Android / Windows / Linux上同样适用于基础JavaScript jugad。