4

iPadのJavaScriptでキーストロークを記録するのに問題があります。次のスクリプトはChromeとSafariで機能しますが、iPadSafariでは機能しません。Bluetoothバーコードスキャナーは、キーストロークとして12桁を送信してから、戻り文字を送信します。誰かアイデアはありますか?

これを試すにはiPadが必要だと思います:)

ありがとう、マーク

$(document).ready(function(){
 $(document).keypress(function(e){
  if( e.keyCode == 13){
   alert($('#barcode').attr('value'));
   $('#barcode').attr('value','');
  }
  else{
   var key = String.fromCharCode(e.which);
   var new_val = $('#barcode').attr('value') + key;
   $('#barcode').attr('value',new_val);
  }
 });
});
4

2 に答える 2

5

iOS 用 Safari は、フォームのコンポーネントではない DOM 要素でキーボード イベントをトリガーしません。これには、ページ上の任意の場所でキーストロークをキャプチャするために通常使用されるドキュメントと本文が含まれます。

ドキュメントまたはページの本文でキーストローク イベントをトリガーする唯一の方法は、入力エリアまたはテキストエリアでトリガーすることです。その場合、イベントは本文とドキュメントに正しく「バブル」します。

ただし、iOS の Safari では JavaScript から要素にフォーカスを与えることができないため、これは問題になる可能性があります。

現時点では、ユーザーが最初のスキャンを開始する前に入力フィールドをクリックする必要があるソリューションを使用しています。その後、入力フィールドは画面外に移動しますが、フォーカスは保持されます。

誰かがより良い解決策を持っている場合は、共有してください。

于 2011-01-26T12:33:13.713 に答える
-1

こんにちは、「プロトタイプ」JavaScript フレームワークでのみ機能するこれを使用してみてください。このスクリプトは EAN13 または EAN8 でのみ機能しますが、12 桁で機能させたい場合は、「if(result.length == 13)」を変更するだけです。

<script language="javascript" type="text/javascript">

    Event.observe(window, 'load', function(){
        Event.observe(document, 'keyup', myEventHandler);
    });

    var timeout = 0;

    function myEventHandler(e)
    {
        if(e.keyCode == 13)
        {
            var result = $('test').value;
            $('test').value = '';

            if(result.length == 13 || result.length == 8)
            {
                var d = new Date();
                var interval = d.getTime() - timeout;
                timeout = 0;

                if(interval <= 1000)
                {
                    alert(result);
                }
            }
        }
        else if(e.keyCode >= 48 && e.keyCode <= 57)
        {
            if(timeout == 0)
            {
                var d = new Date();
                timeout = d.getTime();
            }

            var key = String.fromCharCode(e.which);
            var new_val = $('test').value + key;
            $('test').value = new_val;
        }
    }
</script>
<input type="hidden" id="test" />
于 2011-01-16T20:38:00.350 に答える