Приветствую!
Буквально пару месяцев назад решал такую задачу, писал небольшое web-приложение для инвентаризации магазина.
Логику сделал следующую:
добавил глобальной событие на "keydown", и в нём делал фокус на скрытый input.
на самом input'е также установлено событие на нажатие клавиши "Enter". Так как сканер баркодов, после отправки кода также эммулирует нажатие клавиши "Enter", то есть, как бы завершает ввод.
И уже в событие у input'а, на "Enter", запускается функция, в который и происходят различные проверки введённой информации.
Вот пример глобального события:
window.addEventListener("keydown", function() {
try {
if (window.editing) return;
let obj = document.getElementById("barcode");
if (window.searched) obj.value = "";
window.searched = false;
obj.focus();
} catch (e) {
console.log(e);
}
});
тут меня происходят некоторые вспомогательные проверки, например:
если открыто какое-то модальное окошко для редактирования чего-то там, то не переводит фокус при нажатии клавиш (выполнении функции останавливается);
потом происходит непосредственно фокус в нужный input:
далее проверка на переменную searched, этой переменной присваивается true в функции, которая проверяет введённые данные (при событии onEnter), тут происходит очистка поля, для нового скана. Так как дело в том, что когда сканер отправляет например 13ти значный код, то после каждой цифры происходит события "keydown".
Вот как-то так.