Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.11.2018, 07:45
Новичок на форуме
Отправить личное сообщение для fokas.pokas Посмотреть профиль Найти все сообщения от fokas.pokas
 
Регистрация: 25.11.2018
Сообщений: 4

Изменение данных textarea и программный вызов события об изменении
При работе с данными на некой странице, результат выводится в textarea. Если его изменить, данные на странице так же изменятся. Та как мне не понятно, как там все устроено, работать с данными я попытался через textarea.

После присваивания значения value у textarea, не вызываются события об изменении данных для этого элемента. Потому на странице никакой реакции нет. Как сообщить слушателям, что данные изменились?

Эмулировать нажатие клавиши Enter, как я уже понял, нельзя. Попробовал так же поместить textarea в form и вызвать .form.submit(), но это привело только к перезагрузке страницы.

Я почти ничего не нашел по этому вопросу. Возможно, эмулировать ввод данных и вовсе не адекватная затея. Прошу помочь или направить в правильную сторону.

Последний раз редактировалось fokas.pokas, 25.11.2018 в 08:38.
Ответить с цитированием
  #2 (permalink)  
Старый 25.11.2018, 09:53
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

одно из двух скорее всего поможет
document.querySelector('textarea').dispatchEvent(new Event("change"));

document.querySelector('textarea').dispatchEvent(new Event("input"));
Ответить с цитированием
  #3 (permalink)  
Старый 25.11.2018, 10:48
Новичок на форуме
Отправить личное сообщение для fokas.pokas Посмотреть профиль Найти все сообщения от fokas.pokas
 
Регистрация: 25.11.2018
Сообщений: 4

Спасибо огромное. Действительно, сработала последовательность
document.querySelector('textarea').dispatchEvent(new Event("input"));
document.querySelector('textarea').dispatchEvent(new Event("blur"));

Последний раз редактировалось fokas.pokas, 25.11.2018 в 11:09.
Ответить с цитированием
  #4 (permalink)  
Старый 25.11.2018, 12:22
Аспирант
Отправить личное сообщение для Svorg Посмотреть профиль Найти все сообщения от Svorg
 
Регистрация: 16.11.2018
Сообщений: 38

Во-первых, querySelector() ищет "первый попавшийся элемент из группы элементов подходящих под фильтр", причём его может и не найтись, тогда в том виде вам будет ошибка:
Цитата:
Uncaught TypeError: Cannot read property 'dispatchEvent' of null at ...

Может стоит как-то так?:
for (const e of document.querySelectorAll('textarea')) {
  e.dispatchEvent(new Event("input"));
  e.dispatchEvent(new Event("blur"));
};
И получше подумать над конкретизацией фильтра в querySelectorAll()...
Ответить с цитированием
  #5 (permalink)  
Старый 25.11.2018, 16:41
Новичок на форуме
Отправить личное сообщение для fokas.pokas Посмотреть профиль Найти все сообщения от fokas.pokas
 
Регистрация: 25.11.2018
Сообщений: 4

Это просто общий демонстрационный код, в котором j0hnik поставил акцент только на методе отправки события в общую систему событий от конкретного элемента.
Да, я понимаю, что таким образом возвращается первый textarea найденный в DOM

Последний раз редактировалось fokas.pokas, 25.11.2018 в 16:55.
Ответить с цитированием
  #6 (permalink)  
Старый 25.11.2018, 23:45
Новичок на форуме
Отправить личное сообщение для fokas.pokas Посмотреть профиль Найти все сообщения от fokas.pokas
 
Регистрация: 25.11.2018
Сообщений: 4

Мне достаточно было пройтись по содержанию учебника Я все таки, как оказалось, поленился...

Генерация событий на элементах

Последний раз редактировалось fokas.pokas, 25.11.2018 в 23:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Валидация данных и вызов методов Vanya_1234 Ваши сайты и скрипты 2 03.05.2014 22:04
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
Программный вызов событий для конкретных элементов iNfantry jQuery 9 31.01.2012 15:21
вызов события на определенном элементе vvsh Events/DOM/Window 1 23.06.2010 06:17
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16