按键.显示的代码多于条形码扫描仪输出的代码

keyPress.which shows more codes than what barcode scanner outputs

本文关键字:代码 扫描仪 输出 条形码 显示 按键      更新时间:2023-09-26

当我在普通记事本中使用条形码扫描仪时,它会扫描这样的代码:2000000415369。当我在HTML中创建一个输入字段,并将焦点放在该字段中并扫描条形码时,它仍然会输出正确的代码。

现在,当我创建一个javascript侦听器来捕获代码时,为了确保在javascript中输入来自条形码扫描仪,keyPress event.which字符串输出的字符比上面描述的要多得多。我在控制台输出中得到了这个:

0|5|0|2|0|4|8|0|0|4|8|0|0|4|8|0|0|4|8|0|0|4|8|0|0|4|8|0|0|5|2|4|0|4|9|1|0|5|3|5|0|5|1|3|0|5|4|6|0|5|7|9|

其中每个键代码都已更改为其键盘值。当您比较两个扫描的代码时,您会发现较长的扫描代码中包含正确的条形码。每个正确的字符由3个额外的数字分隔:

0502048004800480048000524104910535051305460579

有人知道这里发生了什么吗?我完全不明白为什么keyPress事件会捕捉到比输入字段更多的数字。我还用普通键盘进行了测试,输入只会导致正确的字符被输出到控制台。

以下是我用于捕获keyPress事件的javascript代码:

$(document.body).on('keypress',function(e){
    aScannedEan.push(String.fromCharCode(e.which));
});
console.log(aScannedEan.join("|"));

我认为你应该试试这个

 var current_keys = []; 
var str='';
 function checkKeyPress(event){
        current_keys.push(event.keyCode);
        setTimeout(interpret_keys, 500);
    }
    function interpret_keys (){
      var keys = -1,key, i = 0;
      for (i; i < current_keys.length; i++) {
        key = current_keys[i] - 48; 
        if(key >= 0 && key <= 9)  {
              keys = '' + key;
              str +=''+key; 
        }
      }
      keys = parseInt(keys); 
      current_keys = []; 
      checkKeyPress1(str);
    }
<body onkeypress="return checkKeyPress(event)" >

在上面的代码中,我读取了用户按下的数字,并导航到该特定选项。希望这能有所帮助。