2013-04-04 4 views
0

У меня есть текстовое поле внутри панели обновления:Сканирование штрих-код в текстовое поле и обжиг textboxChanged asp.net

<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 штрихкодов в сочетании.

В принципе я думаю, что я должен каким-то образом увеличить время для ключа вверх, так как он читает только часть штрих-кода, а затем комбинирует его со второй штрих-код читать ...

и по так: doPostBack (этот) метод:

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

Любые идеи?

PS: сканер оленьей кожи TRow ENTER в конце ...

ответ

1

Поскольку ваш считыватель штрих-кода находится на клиентском компьютере, когда вы вызываете __dopostback, браузер снова загружает одну и ту же страницу, и за это время все события клавиатуры моделируются считыватели штрих-кода не передаются в текстовое поле.

Так что вам нужно сделать обратную передачу только в том случае, если в вашем текстовом поле имеется 13 символов.

Вы можете изменить свой JavaScript, чтобы сделать что-то вроде этого: (не актуально Javascript)

if (this.value.length == 13) __dopostback(this); 
+0

я получаю сообщение об ошибке, что он не признает GetLength() .. Я также пробовал длину и все еще ничего .... вот ошибка: Ошибка: не удалось получить значение свойства getLength: объект имеет значение null или undefined – Nathan

+0

Вот почему я написал «не фактический javascript». Я только написал общую идею здесь, не помню, какой точный синтаксис использовать для получения длины поля ввода в javascript – ppetrov

+0

ok проверен в Интернете, и, похоже, вам просто нужно использовать 'this.value.length' http: //stackoverflow.com/questions/2825144/how-to-get-input-text-length-and-validate-user-in-javascript – ppetrov

1

textchanged события будет срабатывать, когда text свойства изменяется, поэтому изменение одного символа будет инициировать событие.

Я бы рекомендовал проверить, как вы заполняете текстовое поле, и если вы можете переключиться на полный штрих-код в текстовое поле за один раз, так что вы запускаете событие только один раз.

В противном случае внутри обработчика событий вы можете просто проверить размер текста и только иметь дело с ним, когда это правильное количество символов.

1

Сканер, вероятно, выбросит Введите после того, как он прочитает весь код. Поместите кнопку отправки рядом с ней или запишите клавишу 13.

+0

этот сканер не TRow ENTER .. я проверил – Nathan