小编典典

如何手动触发 onchange 事件?

all

我正在通过日历小部件设置日期时间文本字段值。显然,日历小部件执行以下操作:

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

我想要的是:
在更改日期时间文本字段中的值时,我需要重置页面中的其他一些字段。我已经在没有被触发onchange的字段中添加了一个事件监听器datetimetext,因为我猜onchange只有当元素获得焦点并且它的值在失去焦点时才会改变时才会触发。

因此,我正在寻找一种手动触发此onchange事件的方法(我想应该注意检查文本字段中的值差异)。

有任何想法吗?


阅读 213

收藏
2022-03-11

共1个答案

小编典典

有几种方法可以做到这一点。如果onchange侦听器是通过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");
2022-03-11