Javascript 如何区分关键事件与numpad和条形码阅读器?

Javascript 如何区分关键事件与numpad和条形码阅读器?,javascript,jquery,Javascript,Jquery,我正在开发一个软件,预计将使用条形码阅读器。一切正常,直到客户开始使用新的条形码阅读器,我们在numpad键盘中获得的一些绑定开始触发之前没有发生过的情况(我们实际上尝试了各种条形码阅读器) 我很确定它可以通过条形码阅读器的配置来修复,但我们的大多数客户都是小商店,对这种东西一无所知。因此,从代码中修复它对我们来说非常重要 这是我得到的代码和我想要完成的代码之间的混淆,很明显我忽略了原始代码的一部分,以使其易于阅读 $('body').keydown(function(key){ var key

我正在开发一个软件,预计将使用条形码阅读器。一切正常,直到客户开始使用新的条形码阅读器,我们在numpad键盘中获得的一些绑定开始触发之前没有发生过的情况(我们实际上尝试了各种条形码阅读器)

我很确定它可以通过条形码阅读器的配置来修复,但我们的大多数客户都是小商店,对这种东西一无所知。因此,从代码中修复它对我们来说非常重要

这是我得到的代码和我想要完成的代码之间的混淆,很明显我忽略了原始代码的一部分,以使其易于阅读

$('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谢谢您的回答。虽然我从未从事件属性中获得过如此多的信息。我没有直接访问条形码阅读器进行检查,因此我现在正在联系客户,以至少了解该部门的品牌和型号。