バーコード スキャナーの特徴は、通常、標準の HID キーボードのように見えることです。したがって、スキャンされた新しいコードはそれぞれ、前のコードの後に効果的に「入力」されます。私が過去に使用した解決策は、そのテキストボックスでキーを押す間にどれだけの時間が経過するかを確認することです。10 ミリ秒を超える場合 (またはその値に近い場合、私が使用していたスキャナーでコード全体を「入力」するのにかかった最大の時間だったと思います)、それは新しいバーコードであり、その前のすべてを削除する必要があります。 .
私は手元にIDEを持っていないので、ほとんどのクラス/メソッド名はおそらくかなりずれていますが、例のようなものです:
DateTime lastKeyPress = DateTime.Now;
void txtBarcode_KeyPress(object sender, KeyPressEventArgs args)
{
if(((TimeSpan) (DateTime.Now - lastKeyPress)).TotalMilliseconds > 10)
{
txtBarcode.Text = "";
}
lastKeyPress = DateTime.Now;
}
そうすべきだと思います。文字が追加される前に KeyPress イベントが発生するため機能するため、最初にテキストボックスをクリアできます。
編集:セットアップするには、どこにでもあると思いますがtxtBarcode.TextChanged += txtBarcode_TextChanged
、代わりにtxtBarcode.KeyPress += txtBarcode_KeyPress
. ただし、イベント名が正しいことを確認してください。
編集2:
jQuery バージョン:
この HTML を仮定します (ASP を使用しているため、入力タグのソースは異なって見えますが、出力にはid
属性が含まれます。実際に重要なのは属性のみです):
<form action="" method="post">
<input type="text" name="txtBarcode" id="txtBarcode" />
</form>
次に、このJavaScriptが機能します:
$(document).ready(function() {
var timestamp = new Date().getTime();
$("#txtBarcode").keypress(function(event)
{
var currentTimestamp = new Date().getTime();
if(currentTimestamp - timestamp > 50)
{
$(this).val("");
}
timestamp = currentTimestamp;
});
});
(少なくとも Web ブラウザーでは) 50 ミリ秒が文字間で許容される必要な時間のようです。これを Firefox、Chrome、IE7 でテストしました。