7

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

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

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

4

6 回答 6

13

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

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);
}
于 2013-10-30T08:00:25.920 回答
4

仅当通过设置元素的 onchange 属性注册事件侦听器时,所选答案才有效。

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

    let element = document.getElementById('laneFilter');
    let event = new Event('change');
    element.dispatchEvent(event);
于 2020-11-30T10:49:26.327 回答
0
<input type="checkbox" id="laneFilter"/>
<script> 
    checkbox = document.getElementById("laneFilter");
    checkbox.onclick = function(){ 
        alert('lol');
    };
    checkbox.checked = true;
</script>

也应该工作

于 2013-10-30T07:57:45.240 回答
0

这对我有用,也触发了一个change事件:

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

(在 Chrome 和 Firefox 中测试)

于 2021-10-17T17:03:05.973 回答
-1

我把它削减到 2 然后工作正常

$('#laneFilter').prop('checked','true');
$('#laneFilter').trigger('change');
于 2015-01-19T09:07:38.543 回答
-4

只需调用不带参数的更改函数。

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

它适用于“jquery”:“3.3.1”

于 2018-06-13T05:42:19.973 回答