Если я использую jQuery (expr) .change (function), я могу получить функцию события, которая срабатывает, когда пользователь изменяет значение.
Можно ли заставить это сработать, если оно изменено программно, т.е. если я вызываю jQuery (expr) .val ("moo").
или если какой-нибудь простой старый JavaScript изменит свое значение?
Спасибо за любую помощь.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


После того, как вы изменили значение, вы можете запустить событие самостоятельно и, таким образом, вызвать все обработчики onchange.
jQuery('#element').change();
Изменение значения непосредственно в JS не влияет на то, что jQuery может прослушивать, чтобы вызвать событие изменения. Как говорит Сандер, вы можете запустить обработчик событий самостоятельно. Если у вас нет контроля над другим кодом, изменяющим эти значения, и это не вариант, вам не повезло. Единственный другой вариант, который может сработать, - это попросить наблюдателя наблюдать за значением в интервале с использованием setTimeout, что действительно беспорядочно и, вероятно, не очень хорошая идея.
Тем не менее, иногда это единственный вариант. Я согласен, что это беспорядочно, но это не должно вызывать проблем, если вы выбираете большой интервал (500 мс по моему опыту).
jQuery v1 + поддерживает программный запуск обработчиков - я использовал этот метод в отличие от метода .change (), поскольку он позволяет при необходимости запускать несколько других обработчиков (например, некоторые пользовательские обработчики). Документация по API находится в: http://api.jquery.com/trigger/
Идеально! Именно то, что я искал.