javascript - 用于处理扫描仪输入的按键事件仅返回第一个字符

标签 javascript jquery barcode-scanner

我使用 Datalogic Heron 扫描仪进行条形码输入,并使用此代码获取条形码值 -

<input type="text" id="scannerBarcode" />

<script>
    document.addEventListener("keypress", function(e) {
        alert(e.key);
        $("#scannerBarcode").val(e.key);
        e.preventDefault();
        });      
</script>

我遇到两个问题 -

  1. 使用 e.key 仅返回第一个字符。我不知道如何捕获完整的条形码值。当我关注一个简​​单的 txt 文件时,条形码会显示完整值。
  2. 警报闪烁,不等我点击“确定”。

这是我第一天使用任何扫描仪,所以如果这是一个愚蠢的问题,请耐心等待。

任何人都可以指导如何修复上述问题。

谢谢!

最佳答案

对于由全局文档按键事件管理的条形码输入,您可能会在读取条形码时预计会出现一系列键盘事件,因此您需要存储字符并在新扫描之间清除它们。此代码将允许您附加来自快速输入序列的字符,并清理它以进行新的扫描。

var scannerInput ="";
var lastClear=0;
document.addEventListener("keypress", function(e) {
        console.log(e.key);
        clearTimeout(lastClear);
        lastClear=window.setTimeout(function(){
           scannerInput="";
        },500);
        scannerInput+=e.key;        
        $("#scannerBarcode").val(scannerInput);
        e.preventDefault();
}); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="scannerBarcode" type="text">

您不需要将焦点集中在文本输入上。任何快速按下的按键组都将被捕获(与从条形码接收数据的方式相同)。

如果您的条码扫描仪使用回车('Enter' 键)来完成,您可以在 e.Key = 'Enter' 时清除scannerInput 变量,而不是超时

关于javascript - 用于处理扫描仪输入的按键事件仅返回第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63181333/

相关文章:

javascript - 这两个代码等价吗?

javascript - 在几个 div 上添加另一个类

javascript - 如何捕获页面上的所有请求和响应,并根据需要对每个响应状态执行操作

javascript - jQuery的$如何既是函数又是对象?

Android 条形码扫描仪静态图像与多个 ZXingScannerView

javascript - 两层应用程序中的 Sails.js socket.io。如何定义连接选项?

javascript - 查找并替换图像网址源?

javascript - 当我单击具有相同类的列表中的按钮时,在顶部元素中添加类 - Jquery

iphone - 如何在 iOS 中获取 ISBN 条形码

android - 如何在 Cordova/Phonegap - Eclipse for Android 上安装 barcodescanner-plugin?