имитировать событие onChange для запуска в поле ввода HTML

#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 в качестве параметра при прямом вызове или параметра события (но предоставление собственного параметра события делает этот подход вряд ли целесообразным) — это зависит от того, что вам нужно сделать в функции.