使用javascript更改输入[复选框或单选按钮]时如何获取(或触发)更改事件
how to get(or trigger) change event when input[checkbox or radio buttons] is changed using javascript
我有以下设置,当我通过点击标签或复选框本身 check/uncheck 复选框时,触发了更改事件,
但是当我尝试使用 javascript 来 check/uncheck 复选框时,通过点击一个按钮,复选框将选中或取消选中但更改事件不会触发。
请检查以下代码
var checkbox=document.getElementById("check");
checkbox.addEventListener("change",function(){window.alert("change event")})
document.getElementsByTagName("button")[0].addEventListener("click",function(){
checkbox.checked ? checkbox.checked=false : checkbox.checked=true;
})
<label><input type=checkbox id=check>this is label</label><br>
<button>toggle checkbox</button>
这是为什么?以及如何在使用 javascript.
更改时获取更改事件
为什么是三元条件?使用 checkbox.click();
就这么简单。它将切换 check/uncheck 并触发 change
事件。
var checkbox = document.getElementById("check");
checkbox.addEventListener("change", function() {
window.alert("change event")
})
document.getElementsByTagName("button")[0].addEventListener("click", function() {
checkbox.click();
})
<label><input type=checkbox id=check>this is label</label><br>
<button>toggle checkbox</button>
好吧,您可以将您的逻辑分离到另一个函数中,然后在复选框的 "change" 和按钮的 "click" 上触发该函数。
var checkbox = document.getElementById("check");
checkbox.addEventListener("change", function() {
yourFunction()
});
document.getElementsByTagName("button")[0].addEventListener("click", function() {
checkbox.checked ? checkbox.checked = false : checkbox.checked = true;
yourFunction()
});
function yourFunction() {
window.alert("change event")
}
这还不能解决您的问题吗?不过,我确实相信 更符合您的初衷。
我有以下设置,当我通过点击标签或复选框本身 check/uncheck 复选框时,触发了更改事件,
但是当我尝试使用 javascript 来 check/uncheck 复选框时,通过点击一个按钮,复选框将选中或取消选中但更改事件不会触发。
请检查以下代码
var checkbox=document.getElementById("check");
checkbox.addEventListener("change",function(){window.alert("change event")})
document.getElementsByTagName("button")[0].addEventListener("click",function(){
checkbox.checked ? checkbox.checked=false : checkbox.checked=true;
})
<label><input type=checkbox id=check>this is label</label><br>
<button>toggle checkbox</button>
这是为什么?以及如何在使用 javascript.
更改时获取更改事件为什么是三元条件?使用 checkbox.click();
就这么简单。它将切换 check/uncheck 并触发 change
事件。
var checkbox = document.getElementById("check");
checkbox.addEventListener("change", function() {
window.alert("change event")
})
document.getElementsByTagName("button")[0].addEventListener("click", function() {
checkbox.click();
})
<label><input type=checkbox id=check>this is label</label><br>
<button>toggle checkbox</button>
好吧,您可以将您的逻辑分离到另一个函数中,然后在复选框的 "change" 和按钮的 "click" 上触发该函数。
var checkbox = document.getElementById("check");
checkbox.addEventListener("change", function() {
yourFunction()
});
document.getElementsByTagName("button")[0].addEventListener("click", function() {
checkbox.checked ? checkbox.checked = false : checkbox.checked = true;
yourFunction()
});
function yourFunction() {
window.alert("change event")
}
这还不能解决您的问题吗?不过,我确实相信