为什么使用选中的属性更改复选框时未调用onchange函数

时间:2018-09-24 14:26:09

标签: javascript events

使用另一个按钮处理复选框。

  1. 如果我直接单击复选框,则会触发onchange。

  2. 但是当我使用按钮更改复选框时,不会调用onchange(即show()方法)。

var checkbox=document.getElementById("x");
var button=document.getElementById("y");

button.addEventListener("click",function(){
checkbox.checked== true
?checkbox.checked=false
:checkbox.checked=true;

})


var show=function(){
window.alert("onchange called");
}
<input type='checkbox' name='xyz' id='x' onchange="show()">

<br>

<button id='y'>Toggle Checkbox</button>

如果单击按钮,如何调用show()方法。

1 个答案:

答案 0 :(得分:2)

设置复选框的checked属性不会触发该复选框的change事件。您必须自己发送:

y.addEventListener('click', (e) => {
  // toggle the checkbox
  x.checked = !x.checked;
  // and manually dispatch a change event on the checkbox
  let change = new Event('change');
  x.dispatchEvent(change);
})

x.addEventListener('change', (e) => {
  console.log(x.checked);
})
<input type='checkbox' name='xyz' id='x' />

<br>

<button id='y'>Toggle Checkbox</button>