如何手动触发onchange事件?\[重复\]

JavaScript

Itachi

2020-04-07

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

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

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

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

有任何想法吗 ?

第4037篇《如何手动触发onchange事件?\[重复\]》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
宝儿理查德 2020.04.07

对于那些使用jQuery的人来说,有一个便捷的方法:http : //api.jquery.com/change/

2020.04.07

有两种方法可以做到这一点。如果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");

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android