12

Scannerバーコードをスキャンするために(基本モデル)を使用しています。スキャンされたバーコードはテキスト ボックスに取り込まれます。txtBarcode_TextChangedイベントでは、アクセスするためのバーコードを取得しています。

問題:

スキャナーを複数回クリックすると、バーコードに前の値が追加されます。

私のコード:

protected void txtBarcode_TextChanged(object sender, EventArgs e)
{
    string txt = this.txtBarcode.Text;
    this.txtBarcode.Text = string.Empty;
}
4

5 に答える 5

9

バーコード スキャナーの特徴は、通常、標準の 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 でテストしました。

于 2010-05-24T07:02:18.523 に答える
2

TextChanged イベントハンドラを次のように変更してみてください:

txtBarcode.SelectionStart = 0;  
txtBarcode.SelectionLength = txtBarcode.Text.Length;


コードを読み取った後、テキストボックス内のテキストを選択し、別の読み取りでそれを書き換えます。+ ユーザーが手動でコピーまたは変更するのにより適しています

于 2010-05-24T07:01:23.100 に答える
-1

を割り当てている場合はtxtBarcode.value += barcode、に変更しますtxtBarcode.value = barcode

于 2010-05-24T06:51:50.130 に答える