繁体   English   中英

复选框并触发更改事件javascript

[英]check checkbox and trigger change event javascript

我想从javaScript 而不是 jQuery触发更改事件和复选框。
由于这种奇怪的行为,我在使用 jQuery 时遇到了问题。
我以前用 jQuery 做的是:

$('#laneFilter').prop('checked','true').trigger('change');

我想用 javaScript 做同样的事情。 这一定很简单,但我找不到方法。 请帮助提前致谢

有几种方法可以做到这一点。 最简单的方法是调用该函数:

var Chkinput = document.getElementById("laneFilter");
Chkinput .onchange();

如果您需要它来完全模拟真实事件,或者如果您通过 html 属性或addEventListener / attachEvent设置事件,则需要进行一些功能检测以正确触发事件:

if ("createEvent" in document) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    element.dispatchEvent(evt);
}

只有通过设置元素的 onchange 属性注册了事件侦听器,所选答案才会起作用。

如果不是这种情况,您可以使用:

    let element = document.getElementById('laneFilter');
    let event = new Event('change');
    element.dispatchEvent(event);
<input type="checkbox" id="laneFilter"/>
<script> 
    checkbox = document.getElementById("laneFilter");
    checkbox.onclick = function(){ 
        alert('lol');
    };
    checkbox.checked = true;
</script>

也应该工作

这对我有用,也会触发change事件:

const Chkinput = document.getElementById("laneFilter");
Chkinput.click();

(在 Chrome 和 Firefox 中测试)

我把它切成 2 然后工作正常

$('#laneFilter').prop('checked','true');
$('#laneFilter').trigger('change');

只需调用没有参数的更改函数。

$('#laneFilter').change('change', function(){
        debugger
        ...
}).change();

它适用于“jquery”:“3.3.1”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM