#javascript #html #jquery #dom
Вопрос:
Я внедрил сканер штрих-кодов, который использует мобильные камеры для декодирования и заполнения поля поиска . Это поле имеет функцию автозаполнения при вводе текста:
Например: база данных имеет — 1234, 938, 18279, 3920, 5781
Если я наберу в строке поиска «18», он автоматически выберет 18279, так как в базе данных нет других опций
Обычно это регулярно работает со сканерами штрих-кодов (аппаратными средствами), поскольку они действуют в качестве входных данных.
Однако, когда я использую этот сканер штрих-кодов на основе html5/js, он декодирует результат и вставляет их в поле поиска, однако функция автозаполнения/поиска не работает.
Это мой код
function onScanSuccess(decodedText, decodedResult) { if (decodedText !== lastResult) { document.getElementById("search_product").value = ''; beep(); countResults; lastResult = decodedText; console.log(`Scan result ${decodedText}`, decodedResult); document.getElementById("search_product").focus(); document.getElementById("search_product").value = decodedText; } }
Я думаю, что проблема в .value, поскольку он изменяет значение поля, а не «вводит» результат. Существуют ли какие-либо альтернативы .value, которые могли бы решить мою проблему?
Комментарии:
1. Я предполагаю , что есть такое событие, как
$("#search_product").on(...someevent..., handler)
а) измените «какое-то событие» наinput
б) после вызова вашего.value=decodedText
добавленияhandler()
. Убедитесь, что это именованная функция, а не встроенная анонимная функция.2. Вы имеете в виду это // $(‘#search_product’) .автозаполнение({ задержка: 1000, источник: функция(запрос, ответ) { var price_group = «; var search_fields = []; $(‘.search_fields:проверено’).каждый(функция(i){ search_fields[i] = $(это).val(); });