條形碼掃描儀的事情是,他們通常呈現自己看起來像一個標準的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的版本:
,因爲你正在使用ASP假設這HTML(,您的輸入標籤源將有所不同,但輸出仍然有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;
});
});
似乎(至少在網絡瀏覽器中)50毫秒是字符間允許的所需時間。我已經在Firefox,Chrome和IE7中測試過了。
這是一個完全有效的問題,也許英文不完美,但他想要的是明確的。 – Kazar 2010-05-24 07:04:04