Изменение данных textarea и программный вызов события об изменении
При работе с данными на некой странице, результат выводится в textarea. Если его изменить, данные на странице так же изменятся. Та как мне не понятно, как там все устроено, работать с данными я попытался через textarea.
После присваивания значения value у textarea, не вызываются события об изменении данных для этого элемента. Потому на странице никакой реакции нет. Как сообщить слушателям, что данные изменились? Эмулировать нажатие клавиши Enter, как я уже понял, нельзя. Попробовал так же поместить textarea в form и вызвать .form.submit(), но это привело только к перезагрузке страницы. Я почти ничего не нашел по этому вопросу. Возможно, эмулировать ввод данных и вовсе не адекватная затея. Прошу помочь или направить в правильную сторону. |
одно из двух скорее всего поможет
document.querySelector('textarea').dispatchEvent(new Event("change")); document.querySelector('textarea').dispatchEvent(new Event("input")); |
Спасибо огромное. Действительно, сработала последовательность
document.querySelector('textarea').dispatchEvent(new Event("input")); document.querySelector('textarea').dispatchEvent(new Event("blur")); |
Во-первых, querySelector() ищет "первый попавшийся элемент из группы элементов подходящих под фильтр", причём его может и не найтись, тогда в том виде вам будет ошибка:
Цитата:
Может стоит как-то так?: for (const e of document.querySelectorAll('textarea')) { e.dispatchEvent(new Event("input")); e.dispatchEvent(new Event("blur")); };И получше подумать над конкретизацией фильтра в querySelectorAll()... |
Это просто общий демонстрационный код, в котором j0hnik поставил акцент только на методе отправки события в общую систему событий от конкретного элемента.
Да, я понимаю, что таким образом возвращается первый textarea найденный в DOM |
Мне достаточно было пройтись по содержанию учебника :blink: Я все таки, как оказалось, поленился...
Генерация событий на элементах |
Часовой пояс GMT +3, время: 07:21. |