js 获取扫码枪输入值 监听扫码枪输入事件
程序员文章站
2022-06-14 20:33:25
...
扫码枪:外设输入设备。输入时触发keydown 事件。扫码结束时自动输入enter键值。
百度的方法主流是监听:keydown时间不一样来判断是键盘输入还是扫码枪输入。然后记录到js变量。或者元素标签上
这是不想给输入框设置焦点时的做法。
而我懒得区分输入设备是什么,手动输入、还是扫码输入我都不care。搞清楚这点后,只能给输入框默认个焦点就解决了。唯一难题时实际操作时需要挪动鼠标点一下
输入框获取光标焦点。而只要解决这个难题比上面判断输入时间间隔不要太简单。我的思路如下:
- 弹出一个界面用于获取扫码枪的扫描结果
- 当鼠标位于弹出界面内,默认设置输入框的光标焦点事件。(因为刚弹出的界面你没有设置光标焦点事件的话,原则上document代表不是弹出页面。所以keydown事件不会在弹出界面响应的)
- 不管手动输入、还是扫码枪输入支付码都可以。只需要下方绑定下鼠标的悬浮事件就ok了
//当前页面添加绑定事件
$(document).bind("mouseover",function(e){
//当前页面中获取焦点所在的元素
if ($(":focus").length <= 0) {
//防止初始化时元素未渲染号所以使用延迟设置焦点事件
var focusDom = $('#submit_PAY_CODE');
setTimeout(function(){
$(focusDom).focus();
},50);
}
});