@lagudal

Как передать переменную в инпут как набранную вручную?

Проблема вот в чем.
Есть форма, к которой привязан скрипт автозаполнения адреса, в частности полей индекс, город и улица - если важно, это melissa, вот демо.
Адаптировали под свои требования.
Три переменные city, postcode и street - при клике на выбранный элемент значение передается в инпут - пример.

document.querySelector("[name='city']").value = city;
document.querySelector("[name='postcode']").value = postcode;

Значение передается, все подставляется, все корректно. Вот только value в инпутах не устанавливается. Т.е. устанавливается ровно то, что набрано на клавиатуре. Например, если я начинаю набирать 5-значный индекс, и после первых двух трех или четырех нахожу нужный мне и подставляю его уже с городом, то value инпутов будет:
индекс - те цифры что набрал вручную
город - пустое значение и скрипт вернет ошибку что это required field

60dc3b04eabc4398162900.png
Улица - те буквы которые набрал вручную.
Если во всех полях были набраны вручную несколько знаков, то на следующий шаг именно они и передаются.
60dc3bcf98a08129250324.png
В данном примере а- это первая буква улицы, набранная, индекс и город тоже набраны не полностью.
Т.е. надо передать значение таким образом, чтобы была эмуляция ручного набора, или как то еще.
Пока приходит на ум только клик по инпуту и после этого энтер, так в принципе сработает, но после энтер скрипт снова загружает список предлагаемых вариантов.
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
profesor08
@profesor08 Куратор тега JavaScript
На странице нет элементов [name='city'] и [name='postcode']. Но на тех, что есть все работает
document.querySelector(".contactForm input").value = "123123123"


Если надо вызвать код обработчика, то надо создать подходящий ивент
input.dispatchEvent(new Event("input"))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы