Как программно вызвать событие onchange на входе?
Я пробовал что-то вроде этого:
var code = ele.getAttribute('onchange');
eval(code);
Но моя конечная цель - запустить любые функции слушателя, а это, похоже, не работает. Также не обновляется просто атрибут «значение».
javascript
Soldarnal
источник
источник
var evt = document.createEvent('CustomEvent'); evt.initCustomEvent('input', true, false, { }); elem.dispatchEvent(evt);
В jQuery я в основном использую:
источник
тьфу, не используйте eval ни для чего . Что ж, есть определенные вещи, но они крайне редки. Скорее, вы бы сделали это:
Дополнительные параметры см. Здесь: http://jehiah.cz/archive/firing-javascript-events-properly
источник
new Event(...)
иdispatchEvent
, похоже, в настоящее время является правильным решением.Element.addEventListener
для обработки событий. Чтобы добиться этого современным способом, см. Ответ @Miscreant.По какой-то причине ele.onchange () выбрасывает для меня исключение «метод не найден» в IE на моей странице, поэтому я в итоге использовал эту функцию из ссылки, предоставленной Kolten, и вызвал fireEvent (ele, 'change'), которая сработала :
Однако я создал тестовую страницу, подтверждающую, что вызов должен работать onchange ():
Изменить: Причина, по которой ele.onchange () не работает, заключалась в том, что я фактически ничего не объявил для события onchange. Но fireEvent все еще работает.
источник
element.dispatchEvent(new Event('change', true, true))
вместо всего этого загадочного и в основном устаревшегоcreateEvent
иinitEvent
прочего.Это наиболее правильный ответ для IE и Chrome:
источник
Взято из нижней части QUnit
Вы, конечно, можете заменить содержимое $ .browser на собственные методы обнаружения браузера, чтобы сделать его независимым от jQuery.
Чтобы использовать эту функцию:
Это в основном вызовет реальное событие DOM, как если бы что-то действительно изменилось.
источник
Если вы добавите все свои события с помощью этого фрагмента кода:
то вы можете просто использовать
element.on<EVENTNAME>()
where<EVENTNAME>
- имя вашего события, и это вызовет все события с<EVENTNAME>
источник
Для запуска любого события в Javascript.
источник
если вы используете jQuery, у вас будет:
или MS AJAX:
Или в необработанном HTML-коде элемента:
Перечитав вопрос, я думаю, что пропустил то, что нужно было делать. Я никогда не находил способ обновить элемент DOM таким образом, чтобы вызвать событие изменения, лучше всего использовать отдельный метод обработчика событий, например:
Поскольку вы уже пишете метод JavaScript, который изменит его, нужно вызвать только 1 дополнительную строку.
Или, если вы будете с помощью платформы Microsoft AJAX вы можете получить доступ ко всем обработчикам событий с помощью:
Это позволит вам поработать в стиле отражения, чтобы найти нужный обработчик событий.
источник
Используя JQuery, вы можете делать следующее:
источник