如何手动触发onchange事件?

ar7v8xwq  于 2021-09-29  发布在  Java
关注(0)|答案(3)|浏览(360)

此问题已在此处找到答案

如何在javascript中触发事件((18个答案)
7年前关闭。
我正在通过日历小部件设置日期时间文本字段值。显然,日历小部件的功能如下:

document.getElementById('datetimetext').value = date_value;

我想要的是:在更改日期时间文本字段中的值时,我需要重置页面中的一些其他字段。我在datetimetext字段中添加了一个onchange事件侦听器,该字段不会被触发,因为我猜 onchange 仅当元素获得焦点时触发&其值在失去焦点时更改。
因此,我正在寻找一种手动触发的方法 onchange 事件(我想应该检查文本字段中的值差)。
有什么想法吗?

myss37ts

myss37ts1#

有几种方法可以做到这一点。如果 onchange listener是通过 element.onchange 属性,并且您不必担心事件对象或冒泡/传播,最简单的方法就是调用该函数:

element.onchange();

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

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

wlsrxk512#

mdn建议在现代浏览器中有一种更干净的方法:

// Assuming we're listening for e.g. a 'change' event on `element`

// Create a new 'change' event
var event = new Event('change');

// Dispatch it.
element.dispatchEvent(event);
2g32fytz

2g32fytz3#

对于使用jquery的用户,有一个方便的方法:http://api.jquery.com/change/

相关问题