Прослушиватель событий переключателей не запускается при изменении вручную

#javascript #html #radio-button #addeventlistener #event-listener

#javascript #HTML #переключатель #addeventlistener #прослушиватель событий

Вопрос:

Я использую

 document.getElementById('myId').checked = true;
 

чтобы изменить, какой радиовход / кнопка должны быть проверены.

Он работает нормально, но у меня также есть прослушиватель событий

 document.getElementById('myId').onchange = function () {
  console.log(this.checked);
};
 

Проблема в том, что прослушиватель событий запускается, когда я нажимаю радиовход / кнопку, но он не запускается, когда я меняю checked состояние с помощью кода.

Ответ №1:

Из документации :

Событие изменения происходит, когда элемент управления теряет фокус ввода, и его значение было изменено с момента получения фокуса. Это событие действительно для ввода, ВЫБОРА и ТЕКСТОВОЙ области. элемент.

Таким образом, событие не будет срабатывать при программном изменении значения. Итак, что вы можете сделать, это запустить событие программно, вызывая функцию.

 var ele = document.getElementById('myId');
ele.checked = true;
ele.onchange.call(ele);