gpt4 book ai didi

javascript - 通过 JavaScript 以编程方式更改复选框时触发事件

转载 作者:搜寻专家 更新时间:2023-11-01 05:20:41 25 4
gpt4 key购买 nike

我需要知道何时使用纯 JavaScript 的 Javascript 更改了复选框。

我已经设置了一个 'onchange' 事件,当用户更改复选框时它会成功执行,但是当另一个 JS 函数使用如下代码更改它时这不起作用:

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

当 JS 选中或取消选中复选框时,是否可以使用纯 JavaScript 触发事件?

最佳答案

您可以使用 document.createEvent 创建一个 change 事件/initEvent方法,然后使用 dispatchEvent method从指定的 checkbox 元素分派(dispatch)事件。

var event = document.createEvent("HTMLEvents");
event.initEvent('change', false, true);
checkbox.dispatchEvent(event);

这将允许您以编程方式更改元素的 checked 属性,然后触发 change 事件,从而触发事件监听器。

这是一个基本的例子:

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);
}
<input type="checkbox" />
<button>Programmatically trigger 'change' event</button>

作为替代方案,您还可以使用 Event() constructor ,但是它的浏览器支持较少。

var event = new Event('change');
checkbox.dispatchEvent(event);

这是一个例子:

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 = new Event(eventName);
element.dispatchEvent(event);
}
<input type="checkbox" />
<button>Programmatically trigger 'change' event</button>

关于javascript - 通过 JavaScript 以编程方式更改复选框时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41981509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com