0

更新パネル内にテキストボックスがあります:

<asp:TextBox ID="txtInsert" 
             runat="server" Font-Size="Large" MaxLength="13" 
             Width="150px" onkeyup="doPostBack(this);" AutoPostBack="True"
             OnTextChanged="txtInsert_TextChanged"></asp:TextBox>

このテキストボックスは、バーコードをスキャンして値を取得する必要があります。バーコードはすべて 13 桁です。txtInsert_TextChanged メソッドで、値がテーブル内にスキャンされたかどうかを確認し、メッセージを表示してテキスト ボックスの値を削除します。

問題は、1 文字または 4 文字しか読み取れない場合もあれば、13 桁の場合もありますが、2 つのバーコードを組み合わせて作成されていることです。

基本的に、バーコードの一部しか読み取らず、それを 2 回目のバーコード読み取りと組み合わせるので、キーアップの時間をどうにかして増やす必要があると思います...

ちなみに、 doPostBack(this) メソッドは次のとおりです。

<script type="text/javascript">
    function doPostBack(o) {
        __doPostBack(o.id, '');
    }
</script>

何か案は ?

PS: スキャナーは最後に ENTER を押しません...

4

3 に答える 3

1

プロパティが変更されるtextchangedとイベントが発生するtextため、1 文字の変更でイベントがトリガーされます。

テキストボックスにどのように入力しているかを確認し、バーコード番号全体を一度にテキストボックスに入れるように切り替えて、イベントを1回だけトリガーできるかどうかを確認することをお勧めします.

イベント ハンドラー内でこれに失敗すると、テキストのサイズを確認して、適切な文字数の場合にのみ処理できます。

于 2013-04-04T20:55:27.510 に答える
1

Enterスキャナーは、コード全体を読み取った後におそらくスローします。その横に送信ボタンを配置するか、キー 13 をキャプチャします。

于 2013-04-04T21:02:39.953 に答える
1

バーコード リーダーはクライアント コンピューター上にあるため__dopostback、ブラウザーを呼び出すと同じページが再度読み込まれます。この間、バーコード リーダーによってシミュレートされたすべてのキーボード イベントはテキスト ボックスに送信されません。

したがって、テキスト ボックスに 13 文字ある場合にのみポストバックを実行する必要があります。

次のようなことを行うように JavaScript を変更できます: (実際の JavaScript ではありません)

if (this.value.length == 13) __dopostback(this);
于 2013-04-04T21:04:19.873 に答える