2017-06-02 52 views
0

我正在研究預計使用條形碼閱讀器的軟件。一切工作正常,直到客戶開始使用新的條形碼閱讀器,並且我們在數字鍵盤鍵盤上獲得的一些綁定開始觸發,這是之前沒有發生過的(我們實際上嘗試了各種條形碼閱讀器)。如何區分數字鍵盤和條碼閱讀器的關鍵事件?

我很確定它可以從條形碼閱讀器配置中修復,但我們的大多數客戶都是小商店,對這類東西沒有任何瞭解。因此,從代碼中修復它對我們來說非常重要。

下面是我得到的和我想要實現的混合代碼,顯然,我忽略了原始代碼的一部分以使其易於閱讀。

$('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; 
}); 

希望各種解決方案或解決問題。

+3

查看事件屬性,看看讀者是否有什麼不同。 – epascarello

+0

@epascarello感謝您的回答。儘管我可以從活動屬性中獲得如此多的信息。我沒有直接訪問條形碼閱讀器來檢查它,所以我現在正聯繫客戶以瞭解該設備的品牌和型號。 – Grirg

回答

0

也許下面的幫助

數字小鍵盤可以產生取決於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; 
});