@user7

Как запустить dispatchEvent?

Здравствуйте,
есть чужой сайт, на нем есть импуты, на этих импутах стоит обработка события onchange,
которая проверяет произошел ли ввод значений с использованием клавиатуры.
Вроде как через react, ранее element.dispatchEvent(new Event('change', { bubbles: true }));
файрл событие change и инпуты передавали введенные значения через js, сейчас
dispatchEvent ни в какую ничего не файрит, а только лишь меняет значение в инпуте, которое является лишь визуально измененным и на сервер отправляется совсем lругое значение, то что было введено с клавиатуры...
Каким -то образом можно ли катализировать change теперь?
  • Вопрос задан
  • 504 просмотра
Решения вопроса 1
@user7 Автор вопроса
если кому нужно, нашел решение вне ReactTestUtils.Simulate

var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://unpkg.com/react-trigger-change/dist/react-trigger-change.js';
document.head.appendChild(script);
var cap = document.querySelectorAll('input');
cap[1].value = 8.0000;
reactTriggerChange(cap[1]);
cap[1].dispatchEvent(new Event('blur', { bubbles: true }));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
profesor08
@profesor08 Куратор тега JavaScript
Ну ты либо промахнулся элементом, либо не тот ивент отсылаешь. Лично я не подписываюсь у инпутов на onChange, а подписываюсь на onInput, возможно тебе стоит отослать именно его new Event("input")

React или не реакт, значения не имеет, так как там тоже будет подписка на ивенты в dom, а из dom их можно будет отослать.

Но если react или vue, или аналоги, то ссылка на элемент может протухнуть после обновления компонента. При вводе это и происходит. Возможно тебе надо каждый раз делать выборку элемента из dom, после отправки события.
Ответ написан
XanXanXan
@XanXanXan
Вот тут попроще решение без лишних скриптов:
https://stackoverflow.com/a/46012210/14550686
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы