HTML потеря данных ВВОДА при быстром наборе - PullRequest
1 голос
/ 14 января 2020

У меня возникла странная проблема, я надеюсь, что любой может помочь. Дело действительно простое. Я получил чистый HTML с JS сайтом, который работает на локальном киоске windows 10.

На сайте есть поле ввода, которое принимает userId в качестве ввода, а затем загружает следующий сайт, если userId существует , Функция была проверена путем ввода идентификатора пользователя вручную и сканирования штрих-кода. Это киоск, поэтому пользователю предоставляется членская карта, которая читается устройством чтения MSR, которое эмулирует клавиатуру. Считыватель был протестирован в блокноте, и вывод хороший.

Когда пользователь проводит пальцем по карте, ожидаемый идентификатор может быть 100013. Данные, которые получает поле ввода, равны 1013. Это указывает на то, что поле ввода не может быть получено. все цифры, когда его заполнить быстро. В качестве временного решения мне пришлось создать окно window.prompt () для перехвата ввода, но это действительно не очень хорошее решение.

Вот простой код.

HTML:

<input onblur="this.focus()" class="firstField" autofocus type="text" value="" id="userId" onkeydown="log_in(event)"  />

JS функция:

function log_in(event){
    if (event.keyCode == 13 || event.which == 13){
        var tmp = document.getElementById("customerId").value;
        document.getElementById("customerId").value = "";
        CheckUser(tmp);
    }
}

1 Ответ

0 голосов
/ 15 января 2020

Краткий ответ на мой вопрос: это невозможно сделать. Почему? Читатель MSR считывает символы в пакете, а затем анализирует их в браузере. Время между символами указано в мс, и в браузере может работать меньше, чем onchange, по крайней мере, в старых браузерах.

Решение: 1. Найдите способ создать задержку между чтением символов перед синтаксическим анализом. Может быть сделано в некоторой утилите SW или возможно в драйвере для некоторых читателей MSR. 2. Используйте подсказку. Это элемент window.element и не полагайтесь на обновление onchange. (js) 3. Используйте window.external для связи с читателем, если это возможно. (js)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...