我正在通过日历小部件设置日期时间文本字段值。显然,日历小部件是这样做的:
document.getElementById('datetimetext').value = date_value;
我想要的是:
在日期-时间文本框中改变值,我需要重置页面中的其他一些字段。我已经添加了一个onchange事件监听器到datetimetext字段,它没有被触发,因为我猜onchange只在元素获得焦点时被触发,它的值在失去焦点时被改变。
因此,我正在寻找一种方法来手动触发这个onchange事件(我猜应该负责检查文本字段中的值差异)。
什么好主意吗?
有几种方法可以做到。如果onchange监听器是通过元素设置的函数。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");
有几种方法可以做到。如果onchange监听器是通过元素设置的函数。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");