Я хочу нажать на <img>
и заставить браузер имитировать ввод переменной + [ENTER]. Это должно в основном имитировать то же самое, что произошло бы, если бы сканер сканировал штрих-код.
Я разрабатываю надстройку для веб-приложения, которое мы используем на работе. Эта работа включает в себя необходимость сканировать штрих-коды, которые я показал на экране, и мы можем сканировать, однако в некоторых случаях это оказалось немного сложно сканировать. Я хотел бы иметь возможность щелкнуть по сгенерированному штрих-коду и имитировать нажатия клавиш. Символы не должны попадать в какое-либо поле ввода, поскольку я предполагаю, что веб-приложение настроено на захват нажатий клавиш для всего окна. Мне просто нужно, чтобы нажатия клавиш вводились довольно быстро, чтобы имитировать сканер штрих-кода.
Предоставленный jsfiddle в настоящее время имеет переменную, отправляемую в поле ввода, но это не обязательно для окончательных результатов.
Я хотел бы сохранить этот ванильный javascript, так как я все еще изучаю его, и не хочу переходить на Jquery, пока не буду твердо стоять на ногах в JS.
https://jsfiddle.net/pshock13/o2gtzaj5/215
document.getElementById('barcode').addEventListener('click', function() {
//this is where I want theBarcode to be typed out + [ENTER] automatically.
main_input.value = theBarcode;
})
Вы можете имитировать нажатие клавиши, отправив KeyboardEvent
для keydown
и keyup
.
Например. имитация нажатия клавиш для вашего штрих-кода:
document.getElementById('barcode').addEventListener('click', function() {
main_input.value = theBarcode;
[...theBarcode].forEach(function(c) {
window.dispatchEvent(new KeyboardEvent('keydown',{'key':c}));
window.dispatchEvent(new KeyboardEvent('keyup',{'key':c}));
});
window.dispatchEvent(new KeyboardEvent('keydown',{'key':'Enter'}));
window.dispatchEvent(new KeyboardEvent('keyup',{'key':'Enter'}));
});
Я добавил
main_input.value += c;
внутрь функции.forEach
, чтобы проверить, «работает ли она». Что касается этого, то это работает. Спасибо. Но я не смогу протестировать его вживую, пока не доберусь до работы на следующей неделе.