2

通常のメモ帳でバーコード スキャナーを使用すると、次のようなコードがスキャンされます2000000415369。入力フィールドを作成し、HTMLそのフィールドにフォーカスを置いてバーコードをスキャンすると、正しいコードが出力されます。

コードをキャプチャする JavaScript リスナーを作成すると、入力がバーコード スキャナーからのものであることを JavaScript で確認すると、keyPressevent.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|

すべてのキーコードがキーボードの値に変更されています。スキャンした 2 つのコードを比較すると、正しいバーコードがスキャンされた長いコードに含まれていることがわかります。すべての正しい文字は、3 つの追加の数字で区切られています。

050 2 048 0 048 0 048 0 048 0 048 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("|"));
4

1 に答える 1

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)" >

上記のコードでは、ユーザーが押した番号を読み取り、その特定のオプションに移動していました。お役に立てれば。

于 2013-08-21T13:29:31.637 に答える