这是我的问题预览 – 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");
});