触发时未触发onchange事件的复选框

Checkbox not firing onchange event when triggered

本文关键字:复选框 事件 onchange      更新时间:2023-09-26

这是我的问题JSFiddle的预览。

基本上,当我像这样用程序更改输入状态时,我希望触发更改事件:

el.checked = true;

但只有当我直接点击复选框时,事件才会被触发,这对我来说不起作用

编辑:一些澄清:当点击按钮时,我已经在发送一个更改事件,它运行得很好。问题是,我有自定义的复选框元素,而本机输入是隐藏的。因此,当我单击自定义复选框时,更改事件就会正确启动。但是,当我更改本机复选框状态时,自定义复选框不会更改,因为我无法检测到这种更改。。。

我需要的是一些自定义的方法来检测这个复选框的更改,并告诉我"在这里,你的复选框被更改了"。

我使用dispatchEvent:使其工作

button.addEventListener('click', function() {
    if (input.checked) input.checked = false;
    else input.checked = true;
    if ("createEvent" in document) {
      var evt = document.createEvent("HTMLEvents");
      evt.initEvent("change", false, true);
      input.dispatchEvent(evt);
    }
    else
    input.fireEvent("onchange");
});

这是工作Fiddle:

JavaScript中的事件处理程序不会对程序更改做出反应。您必须从代码中调用处理程序。

但是,当您无法访问事件处理程序时,您可以尝试创建自己的事件并在输入时分派它。这里有一个相关的帖子:是否可以将鼠标点击dispatchEvent()到<输入类型=文本>要素