我有一个Rails应用程序,它有一个封闭的后端。在某些页面上,我想自动选择文本输入,这样我就可以使用外部蓝牙扫描仪扫描条形码而无需每次都用鼠标/触摸屏选择它。这非常适用于非移动设备。但是,在移动设备(主要是平板电脑)上,我希望键盘弹出(因为扫描仪被视为"键盘和#34;由系统)。我知道这可以被iOS阻止,因为它可能很烦人。但是,我想知道:
我可以在Android和/或Windows平板电脑上自动显示键盘吗?
在iOS上,我可以更改此默认行为,以便键盘自动显示吗?我可以访问所有需要此行为的设备。
编辑:我知道我可以使用click
事件来显示键盘(现在就是这样)。但是,每次我想要扫描时,我都不想触摸平板电脑。
答案 0 :(得分:4)
除了使用优秀的prompt()
之外,还有一些解决方法。
keyboard
事件,您可以稍微更改js代码以手动执行首次点击(例如全屏textarea
),然后处理扫描器。它可以是textarea
,在第一次点击后立即隐藏,所有内容都在javascript
完成,而无法查看textarea。我已经在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()
(例如从>打开对话框),键盘会显示
在您打开网页的情况下?
答案 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并专注于那里。它将帮助您控制 -
你需要做这样的事情 -
<input type="text" style="visibility: hidden; position: fixed; left: -200px" >
使用jQuery -
$("#theOffViewBox").focus();
这在iOS / Android / Windows / Linux上同样适用于基础JavaScript jugad。