- 締切済み
バーコードによる入力を区別したい
いつもお世話になっております。 blue-horse と申します。 画面上(テキストボックス上でなく)でバーコード入力を検出し、 その内容が定められた字数ならば、定めた処理を行うようにしたいと考えています。 具体的には、バーコード入力による画面遷移です。 例:001 -> 画面A、002 -> 画面B、... バーコードはCode39 スタート/ストップ文字は* body要素でkeypressイベントをキャッチし、スタート/ストップ文字を検出できるかと考えましたが、スタート/ストップ文字はバーコードリーダーが認識するために利用されるだけなので、PCには出力されないようで、いきなりバーコードの値から取得し始めてしまいました。 また、テキストボックスなどで上記の例と同様の入力内容が発生する可能性があるので、charCodeをプールして、特定パターンが発生したらバーコード入力と判断させようとすると、不具合が発生します。 このため、入力がキーボードからなのか、バーコードからなのかを認識することが出来ません。 入力デバイスの位置づけを考えれば当然と言えば当然な話なのですが、どうにかして実現したいと考えています。 何か良い方法、ライブラリ等は無いでしょうか。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
keypressが発生せずにvalueの値が変わった場合はバーコードからの入力と見なすとか。 チェックするタイミングはonblurかタイマーになると思います。 ただし、マウス操作でのコピーペーストでもkeypressを発生させずにvalueが変えることが出来ます。 (というよりも、キーボードからの入力か、マウス操作での入力かを判断するために使っている方法です) 可能ならバーコードリーダーの制御ソフトから何らかの呼び出しを行う方が確実だとは思います。
お礼
taloo 様: 回答ありがとうございます。 お礼つけるの遅くなりまして申し訳ございません。 >keypressが発生せずにvalueの値が変わった場合はバーコードからの入力と見なすとか。 input 要素があるとは限らない状態で実現したいので、body要素で入力を検知させたいのですが、body要素にも入力内容を受け取るvalue属性があるのでしょうか。 あるいは、hidden等で隠し要素に入力値を強制的に放り込む等の手段をとるのでしょうか。 勉強不足にて申し訳ございませんが、そのあたりの実現方法について、追加解説を頂けると嬉しいです。