Javascript 处理扫描仪输入的按键事件仅返回第一个字符
我使用Datalogic Heron扫描仪输入条形码,并使用此代码获取条形码值-Javascript 处理扫描仪输入的按键事件仅返回第一个字符,javascript,jquery,barcode-scanner,Javascript,Jquery,Barcode Scanner,我使用Datalogic Heron扫描仪输入条形码,并使用此代码获取条形码值- <input type="text" id="scannerBarcode" /> 及 文件.添加的文本列表器(“按键”,功能(e){ 警惕(e.key); $(“#scannerBarcode”).val(e.key); e、 预防默认值(); }); 我有两个问题- 使用e.key只返回第一个字符。我不知道如何获取完整的条形码值。当我把焦
<input type="text" id="scannerBarcode" />
及
文件.添加的文本列表器(“按键”,功能(e){
警惕(e.key);
$(“#scannerBarcode”).val(e.key);
e、 预防默认值();
});
我有两个问题-
谢谢大家! 问题在于条形码扫描器是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。你可以试试我关于斑马的回答(同样的问题) 与现有代码保持一致的另一个选项是,不要发出警报,而是将
附加到每个按键上的条形码值上
var barcode=document.querySelector(#scannerBarcode”);
文件.添加的文本列表器(“按键”,功能(e){
如果(例如,keyCode!=13){
条形码.value+=e.key;
}
e、 预防默认值();
});代码>
问题在于条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。你可以试试我关于斑马的回答(同样的问题)
与现有代码保持一致的另一个选项是,不要发出警报,而是将附加到每个按键上的条形码值上
var barcode=document.querySelector(#scannerBarcode”);
文件.添加的文本列表器(“按键”,功能(e){
如果(例如,keyCode!=13){
条形码.value+=e.key;
}
e、 预防默认值();
});代码>
对于由全局文档按键事件管理的条形码输入,在读取条形码时,可能会出现键盘事件突发,因此需要存储字符并在新扫描之间清除它们。这段代码将允许您附加来自快速输入序列的字符,并清理它以进行新的扫描
var scannerInput=“”;
var lastClear=0;
文件.添加的文本列表器(“按键”,功能(e){
控制台日志(e.key);
清除超时(lastClear);
lastClear=window.setTimeout(函数(){
扫描输入=”;
},500);
扫描输入+=e.键;
$(“#scannerBarcode”).val(scannerInput);
e、 预防默认值();
}); 代码>
对于由全局文档按键事件管理的条形码输入,在读取条形码时可能会出现键盘事件突发,因此需要存储字符并在新扫描之间清除它们。这段代码将允许您附加来自快速输入序列的字符,并清理它以进行新的扫描
var scannerInput=“”;
var lastClear=0;
文件.添加的文本列表器(“按键”,功能(e){
控制台日志(e.key);
清除超时(lastClear);
lastClear=window.setTimeout(函数(){
扫描输入=”;
},500);
扫描输入+=e.键;
$(“#scannerBarcode”).val(scannerInput);
e、 预防默认值();
}); 代码>
您是否试图捕捉整个文档上的按键,而不仅仅是输入?将警报(e.key)
更改为console.log(e.key)
以查看在按键
事件期间没有阻塞警报窗口的情况下会发生什么(并在控制台窗口中查看结果),因为它们通常会触发多个事件,不止一个。永远不要调试警报…问题是条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。您可以尝试我关于zebra(同一问题)的回答。是的,我试图捕获整个文档的按键,因为输入文本框可能/可能没有焦点。您是否试图捕获整个文档上的按键,而不仅仅是输入?将警报(e.key)
更改为控制台.log(e.key)
查看在按下键的过程中没有阻塞警报窗口时会发生什么(并在控制台窗口中查看结果),因为它们通常会触发多个事件,而不仅仅是一个事件。永远不要调试警报…问题是条形码扫描仪是标准的键盘输入,但如果不将该值发送到输入字段,您将无法获得您注意到的整个字符串。您可以尝试我关于zebra的回答(同一问题)是的,我试图捕获整个文档的按键,因为输入文本框可能/可能没有焦点。
<script>
document.addEventListener("keypress", function(e) {
alert(e.key);
$("#scannerBarcode").val(e.key);
e.preventDefault();
});
</script>