Javascript 如何区分关键事件与numpad和条形码阅读器?
我正在开发一个软件,预计将使用条形码阅读器。一切正常,直到客户开始使用新的条形码阅读器,我们在numpad键盘中获得的一些绑定开始触发之前没有发生过的情况(我们实际上尝试了各种条形码阅读器) 我很确定它可以通过条形码阅读器的配置来修复,但我们的大多数客户都是小商店,对这种东西一无所知。因此,从代码中修复它对我们来说非常重要 这是我得到的代码和我想要完成的代码之间的混淆,很明显我忽略了原始代码的一部分,以使其易于阅读Javascript 如何区分关键事件与numpad和条形码阅读器?,javascript,jquery,Javascript,Jquery,我正在开发一个软件,预计将使用条形码阅读器。一切正常,直到客户开始使用新的条形码阅读器,我们在numpad键盘中获得的一些绑定开始触发之前没有发生过的情况(我们实际上尝试了各种条形码阅读器) 我很确定它可以通过条形码阅读器的配置来修复,但我们的大多数客户都是小商店,对这种东西一无所知。因此,从代码中修复它对我们来说非常重要 这是我得到的代码和我想要完成的代码之间的混淆,很明显我忽略了原始代码的一部分,以使其易于阅读 $('body').keydown(function(key){ var key
$('body').keydown(function(key){
var keyCode = key.keyCode;
switch(keyCode){
case 96:
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 110:
if(not_actually_from_keyboard_but_barcode){
//step out
}
else{
doNumPadStuff(keyCode);
}
break;
});
希望您能提供任何解决方案或解决此问题。以下内容可能会有所帮助
根据NumLock状态,数字键盘可能会产生不同的键码
$(document).keyup(function(e) {
/* OPTIONAL: Only if you want other elements to ignore event */
e.preventDefault();
e.stopPropagation();
var keyCode = (e.keyCode ? e.keyCode : e.which);
debuger //check what keyCode is saying. to get this press f12 to get browser debugger.
switch(keyCode){
case 96: //numpad 0
case 97: //numpad 1
case 98: //numpad 2
case 99: //numpad 3
case 100: //numpad 4
case 101: //numpad 5
case 102: //numpad 6
case 103: //numpad 7
case 104: //numpad 8
case 105: //numpad 9
case 110: //numpad .
if(not_actually_from_keyboard_but_barcode){
//step out
}
else{
doNumPadStuff(keyCode);
}
break;
});
查看事件属性,看看读者是否有不同之处。@epascarello谢谢您的回答。虽然我从未从事件属性中获得过如此多的信息。我没有直接访问条形码阅读器进行检查,因此我现在正在联系客户,以至少了解该部门的品牌和型号。