Доброго времени суток. Столкнулся с проблемой, вставляю в инпут значение через input.value = “123”, но кнопка отправить не срабатывает, так как не видит изменения инпута. Но если я лично с помощью клавиатуры изменю инпут, то всё обновится и станет работать. Как решить проблему?
Хорошо было бы приложить код, который изменяет кнопку “Отправить”.
Вероятнее всего там есть обработчик который изменяет вид кнопки “Отправить”
Этот обработчик навешивается на некоторые события. Вероятнее всего что он реагирует на событие ‘change’ или ‘blur’ у инпута. Когда происходит input.value = ‘foo’ идет только присваивание, событие при этом не создается. В этом случае либо запустите обработчик вручную, либо сгенерируйте событие на данном инпуте.
тут можно почитать про генерацию событий.
Можно написать, например так:
input.value = 'foo';
const event = new Event('change');
input.dispatchEvent(event);
`
`
это код инпута и кнопки для отправки соответственно. disabled пропадает при вводе текста вручную. HTML
var milo = document.querySelector('input[name="email"]'); if (milo){ milo.value = "123"; var withdraw = document.getElementsByClassName("btn btn--lg btn--green w-full h-65")[0]; if (withdraw){ withdraw.click(); } }
это кусок моего когда на JS
P.S. HTML не вставился. Вот с картинки код
Браузеры строги с попытками подменить действия пользователя программным кодом (клики, движения мышки, заполнение форм). То что этот код не работает скорее всего последствие защитного механизма браузера. Есть значительный шанс что ты не найдешь решения для своей задачи. Но что-то можно попробовать.
Можно попробовать использовать механизм диспатча событий. В свое время для меня он работал в части случаев https://github.com/podgorniy/javascript-toolbox/blob/master/simulate_mouse_events.js
Можно попробовать отправлять форму программно, запуская AJAX запрос, и обрабатывая результат. Но это более муторный процесс потому что нужно будет покрыть кучу нюансов: все что прописано в html-е, первратить в объект запроса.
Так прежде, чем кликать на кнопку, должен сработать код, который убирает атрибут disabled.
А где код этого обработчика?