JS Фокусировка и ввод текста в `input`
Представляю HTML код формы: https://pastebin.com/ZEEE36x4
Следующий скрипт, который я выполняю на странице (сайт принадлежит не мне) призван ввести определённые данные в поле ввода на форме:
var inp = document.querySelector('[data-marker="registration-form/input"]');
inp.select();
inp.focus();
inp.value = '79000000000';
Проблема заключается в том, что при нажатии кнопки для продолжения (кнопка с надписью "Продолжить" на форме) происходит сброс установленного значения input.value. Вызов select(), focus(), click() вообще ничего не делают, хотя должны активировать поле ввода. Если делать вручную, то всё работает. Не понимаю как активировать ввод в этом поле. Есть идеи?
Ответы (1 шт):
Я разобрался в чём была проблема. Значения хранятся в некоторой модели во время выполнения JavaScript и отображаются в форме. Обновление значения поля не приведет к обновлению модели, поскольку обновления привязаны к входным событиям. Таким образом, чтобы заполнить форму и "по настоящему" изменить input.value нужно выполнить:
var event = new Event('input', {
bubbles: true,
cancelable: true,
});
inp.dispatchEvent(event);
const pasteEvent = Object.assign(new Event('paste', { bubbles: true, cancelable: true }), {
clipboardData: {
getData: (type = pasteType) => VALUE,
},
});
inp.dispatchEvent(pasteEvent);