Ben*_*ell 5 javascript checkbox events
我需要知道何时使用纯JavaScript的Javascript更改了复选框。
我设置了一个“ onchange”事件,当用户更改复选框时,该事件成功执行,但是当另一个JS函数使用以下代码对其进行更改时,该事件将不起作用:
document.getElementById('mycheckbox').checked = true;
Run Code Online (Sandbox Code Playgroud)
当JS选中或取消选中复选框时,是否可以使用纯JavaScript触发事件?
您可以change使用document.createEvent/ initEvent方法创建事件,然后使用该dispatchEvent方法从指定的checkbox元素分派事件。
var event = document.createEvent("HTMLEvents");
event.initEvent('change', false, true);
checkbox.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
这将允许您以编程方式更改checked元素的属性,然后触发change事件,从而触发事件侦听器。
这是一个基本示例:
var event = document.createEvent("HTMLEvents");
event.initEvent('change', false, true);
checkbox.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
var checkbox = document.querySelector('[type="checkbox"]');
var button = document.querySelector('button');
// Event Listener:
checkbox.addEventListener('change', function(event) {
alert(event.target.checked);
});
// Programmatically change the `checked` property:'
button.addEventListener('click', function() {
checkbox.checked = !checkbox.checked;
triggerEvent(checkbox, 'change');
});
function triggerEvent(element, eventName) {
var event = document.createEvent("HTMLEvents");
event.initEvent(eventName, false, true);
element.dispatchEvent(event);
}Run Code Online (Sandbox Code Playgroud)
另外,您也可以使用Event()构造函数,但是对浏览器的支持较少。
var event = new Event('change');
checkbox.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
<input type="checkbox" />
<button>Programmatically trigger 'change' event</button>Run Code Online (Sandbox Code Playgroud)
var event = new Event('change');
checkbox.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6358 次 |
| 最近记录: |