Ответ 1
Вещь со сканерами штрих-кодов заключается в том, что они обычно представляют собой стандартную 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;
});
});
Кажется, что (по крайней мере, в веб-браузере) 50 миллисекунд - это необходимое время, чтобы позволить между символами. Я тестировал это в Firefox, Chrome и IE7.