使用普通javascript(非jQuery)触发复选框更改事件

使用普通javascript(非jQuery)触发复选框更改事件,javascript,checkbox,ecmascript-6,dispatchevent,Javascript,Checkbox,Ecmascript 6,Dispatchevent,我正在用ES6构建一个多重选择。所有这些都是启动和功能性的移动项目,点击它们,突出显示,无论你想要什么,但唯一的问题是处理这些复选框。每当突出显示某个项目并按下enter键时,我必须捕获该事件,验证选中项目的数量并更新下拉列表的标题 到目前为止,我发现的方法都是基于使用和的,但它们都不推荐使用,是的,我不知道如何用和解决它 3天来我一直在寻找答案,相信我,我已经尽力了 checkbox.checked = true checkbox.checked = false 只更改复选框值,但不会触发任

我正在用ES6构建一个多重选择。所有这些都是启动和功能性的移动项目,点击它们,突出显示,无论你想要什么,但唯一的问题是处理这些复选框。每当突出显示某个项目并按下enter键时,我必须捕获该事件,验证选中项目的数量并更新下拉列表的标题

到目前为止,我发现的方法都是基于使用和的,但它们都不推荐使用,是的,我不知道如何用和解决它

3天来我一直在寻找答案,相信我,我已经尽力了

checkbox.checked = true
checkbox.checked = false

只更改复选框值,但不会触发任何事件。这听起来可能很愚蠢,但您是否尝试过简单地调用click

checkbox.click()

这听起来可能很愚蠢,但你试过简单地打电话给click吗

checkbox.click()

如果您的复选框html如下所示

<input id="myCb" type="checkbox" />

应该这样做。

如果您的复选框html如下所示

<input id="myCb" type="checkbox" />

应该做到这一点。

不确定是否适用于问题中未描述的OP的具体情况,但一般来说,当可以从多个位置调用同一函数时,不需要从您自己的代码内部触发事件,例如:

常量复选框=document.getElementsByTagName'input' const button=document.getElementById'button' const postProcess=msg=>{console.log`单击${msg}`}后的处理 […复选框].forEachcheckbox=>{ checkbox.onclick=e=>{ 后处理`复选框'${e.currentTarget.value}'` } } button.onclick==>{ const previous=复选框[0]。已选中 复选框[0]。选中=!上一个 后处理`按钮,用于打开复选框a'${previous?'off':'on'}` } A. B
切换A不确定是否适用于问题中未描述的OP的具体情况,但一般来说,如果可以从多个位置调用同一函数,则不必从您自己的代码内部触发事件,例如:

常量复选框=document.getElementsByTagName'input' const button=document.getElementById'button' const postProcess=msg=>{console.log`单击${msg}`}后的处理 […复选框].forEachcheckbox=>{ checkbox.onclick=e=>{ 后处理`复选框'${e.currentTarget.value}'` } } button.onclick==>{ const previous=复选框[0]。已选中 复选框[0]。选中=!上一个 后处理`按钮,用于打开复选框a'${previous?'off':'on'}` } A. B
切换,因为更改复选框值不会触发任何事件,当然也不会触发“单击”或“更改”事件。它们必须在任何情况下单独或一起触发,并且侦听器也必须是特定的,新事件“更改”工作正常。这是一个如何触发和监听事件的问题。
感谢您的回答:-

因为更改复选框值不会触发任何事件,当然也不会触发“单击”或“更改”事件。它们必须在任何情况下单独或一起触发,并且侦听器也必须是特定的,新事件“更改”工作正常。这是一个如何触发和监听事件的问题。
感谢您的回答:-

您是否在设置选中属性后尝试触发单击?checkbox.checked=true;复选框。单击是否确实需要触发事件?为什么不直接调用所需的函数?@Aprillion更改复选框值时,在多种情况下会调用多个函数。@Sushanth-实际的复选框是隐藏的,选中该复选框时,其行将高亮显示,或者在选中该复选框时出现芯片,因此单击将不起作用。是否在设置“已选中”属性后尝试触发单击?checkbox.checked=true;复选框。单击是否确实需要触发事件?为什么不直接调用所需的函数?@Aprillion更改复选框值时,在多种情况下会调用多个函数。@Sushanth-实际的复选框是隐藏的,选中时它的行会高亮显示,或者选中复选框时会出现一个芯片,所以单击不起作用。它仍会单击,即使它是隐藏的,尝试使用可见性:隐藏和显示:非它仍将单击,即使它是隐藏的,尝试使用可见性:隐藏和显示:无