Проблема идентификации ввода со сканера или ручного ввода

У меня сейчас другая задача. Я работаю над созданием веб-страницы, на которой пользователь может использовать сканирующее устройство для ввода длинного серийного номера или сделать это вручную с помощью клавиатуры для ввода значений в текстовые поля JSP. Мне нужно определить тип ввода (вручную или через сканер) для каждого такого поля и отобразить с разными стилями на странице результатов.

Может ли кто-нибудь помочь мне с этим, как мы можем это сделать? Я нашел один способ сделать это через java-скрипт. Написание функции JS при нажатии клавиши, которая будет подсчитывать и поддерживать количество нажатых клавиш. Если количество выходит за пределы 17 цифр, его ввод вручную, иначе ввод сканера. Но эта идея звучит не очень хорошо и может быть неэффективным способом, и моему менеджеру это тоже не понравилось. Можете ли вы предложить какие-либо другие варианты или просто модификацию идеи, которую я упомянул?

Заранее спасибо..!! Я действительно признателен, если вы можете помочь мне в моей ситуации.!!


person user3452558    schedule 26.03.2015    source источник


Ответы (1)


Почему бы просто не измерить время, необходимое для ввода кода? Если быстрее определенного времени (начиная с ввода первой цифры), то это от сканера?

person Stefan Haustein    schedule 26.03.2015
comment
Спасибо Стефан за быстрый ответ..!! Не могли бы вы поделиться более подробной информацией о том, как мы можем измерять время? и да, это от сканера, который мы видим в Walmart или любых продуктовых магазинах, чтобы прочитать штрих-код. он просто автоматически заполняет значение поля, которое вы выбрали. и еще один вопрос, как вы считаете, вариант, который я упомянул в вопросе, является надежным вариантом? - person user3452558; 27.03.2015
comment
Используйте Date.now(), чтобы получить текущее время в миллисекундах и сохранить его где-нибудь при первом нажатии клавиши в заданном поле. Когда введена последняя цифра, сравните сохраненное время с Date.now(). Если разница достаточно мала, номер был введен через сканер. - person Stefan Haustein; 27.03.2015
comment
Спасибо, Стефан, я использовал это измерение времени и после всех исследований пришел к выводу, что это единственный способ справиться с этой ситуацией. Это только для информации, что первый подход, который я упомянул, с подсчетом клавиш, нажатых вручную с событием onkeypress, вообще бесполезен, поскольку сканер также использует интерфейс клавиатуры, а сканер также запускает событие onkeypress для каждого числа. - person user3452558; 25.04.2015
comment
Спасибо за обновление! Если ответ правильный, вы можете принять его (поставьте зеленую галочку, чтобы отметить вопрос как ответ) - person Stefan Haustein; 25.04.2015