#javascript #html #internet-explorer
#javascript #HTML #internet-explorer
Вопрос:
У меня есть jQuery, который использует событие изменения из поля выбора для обновления поля ввода в форме. Мне нужно, чтобы поле ввода запускало событие изменения, когда я обновляю его значение.
Эта ссылка в MSDN показывает способ имитации события щелчка. Есть ли метод, который я могу использовать для имитации события изменения?
Ответ №1:
Вы можете использовать trigger()
:
$('#input-id').trigger('change');
Ответ №2:
Вы можете запустить change
обработчик событий. Вы можете просто назвать это так:
jQuery('#my_field').change();
который является ярлыком для:
jQuery('#my_field').trigger('change');
Подробнее см. Документацию .change()
(его третий вариант без атрибутов).
Ответ №3:
Теоретически это должно сработать:
<input id="textinput" value="somevalue" name="somename" />
<script type="text/javascript">
function doSomethingOnInputChange(e) {
console.log('input on change');
}
$('#textinput').bind('change', doSomethingOnInputChange);
$('#textinput').trigger('change');
</script>
Он привязывает обработчик события к пользовательскому событию «изменение», а затем запускает событие.
Ответ №4:
Уже есть несколько хороших ответов на основе jQuery (хотя вы не использовали тег jQuery), но есть другой подход, который может сработать для вас, если вы привязываете событие изменения к вызову функции.
Допустим, вы уже привязали событие изменения к doSomethingOnInputChange
функции, как в ответе Влада…
Вместо того, чтобы имитировать событие, вызывая «изменение», вы можете напрямую вызвать doSomethingOnInputChange
, то есть вместо выполнения:
$('#textinput').trigger('change')
ваш javascript просто вызывает ту же функцию, которая вызывается в любом случае при запуске события:
doSomethingOnInputChange( ... );
Вы можете захотеть или не захотеть передавать элемент #textinput
DOM в качестве параметра при прямом вызове или параметра события (но предоставление собственного параметра события делает этот подход вряд ли целесообразным) — это зависит от того, что вам нужно сделать в функции.