Rzeczą w skanerach kodów kreskowych jest to, że zazwyczaj prezentują się one jak standardowa klawiatura HID. Dlatego każdy nowy skanowany kod jest skutecznie "wpisywany" po poprzednim. Rozwiązaniem, z którego korzystałem w przeszłości, jest sprawdzenie, ile czasu upływa między naciśnięciami klawiszy w tym polu tekstowym. Jeśli jest to więcej niż 10 milisekund (lub około tej wartości, uważam, że był to największa ilość czasu potrzebna na skaner, którego użyłem do "wpisania" całego kodu), to jest nowy kod kreskowy i powinieneś usunąć wszystko przed nim .
Nie mam IDE do strony, więc większość klasowych nazw/metody są prawdopodobnie daleko, ale coś takiego przykładu:
DateTime lastKeyPress = DateTime.Now;
void txtBarcode_KeyPress(object sender, KeyPressEventArgs args)
{
if(((TimeSpan) (DateTime.Now - lastKeyPress)).TotalMilliseconds > 10)
{
txtBarcode.Text = "";
}
lastKeyPress = DateTime.Now;
}
myślę, że powinien to zrobić. Działa, ponieważ zdarzenie KeyPress występuje przed dodaniem znaku, więc możesz najpierw wyczyścić pole tekstowe.
Edit: Aby skonfigurować, myślę, że wszędzie tam, gdzie masz txtBarcode.TextChanged += txtBarcode_TextChanged
, zamiast tego mają txtBarcode.KeyPress += txtBarcode_KeyPress
. Sprawdź jednak nazwę wydarzenia.
Edycja 2:
jQuery Wersja:
Zakładając ten HTML (ponieważ używasz ASP, źródło dla tagu wejściowego będzie wyglądać inaczej, ale wynik nadal będzie mieć id
atrybut, który jest naprawdę jedynym, który się liczy):
<form action="" method="post">
<input type="text" name="txtBarcode" id="txtBarcode" />
</form>
Wtedy ten javascript działa:
$(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;
});
});
Wygląda na to, że (przynajmniej w przeglądarce internetowej) 50 milisekund to czas wymagany do dopuszczenia między znakami. Przetestowałem to w Firefoksie, Chrome i IE7.
To jest idealnie poprawne pytanie, być może angielski nie jest idealny, ale to, czego chce, jest jasne. – Kazar