当我在普通记事本中使用条形码扫描仪时,它会扫描如下代码: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个附加数字分隔:
050 2 048 0 048 0 048 0 048 0 048 < strong> 0 048 0 052 4 049 1 053 5 051 3 054 6 057 9
有没有人知道这里发生了什么?我完全失去了为什么keyPress事件会捕获比输入字段更多的数字。我还使用普通键盘进行了测试,输入时只会将正确的按下字符输出到控制台。
以下是我用于捕获keyPress事件的javascript代码:
$(document.body).on('keypress',function(e){
aScannedEan.push(String.fromCharCode(e.which));
});
console.log(aScannedEan.join("|"));
答案 0 :(得分:0)
我认为你应该试试这个
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)" >
在上面的代码中,我正在读取用户按下的数字并导航到该特定选项。 希望这会有所帮助。