如何手动触发onchange事件?
我正在通过日历小部件设置date时间文本框的值。 显然,日历小部件就是这样的:
document.getElementById('datetimetext').value = date_value;
我想要的是:在更改date时间文本框中的值我需要重置页面中的其他字段。 我已经添加了一个onchange事件监听器的datetimetext字段是不会被触发,因为我猜onchange
只有当元素获得焦点触发,其价值改变失去焦点。
因此,我正在寻找一种方法来手动触发这个onchange
事件(我想应该照顾检查文本字段中的值差异)。
有任何想法吗 ?
有几种方法可以做到这一点。 如果onchange
监听器是一个通过element.onchange
属性设置的函数,并且您不关心事件对象或冒泡/传播,最简单的方法就是调用该函数:
element.onchange();
如果您需要完全模拟真实事件,或者通过html属性或addEventListener
/ attachEvent
设置事件,则需要执行一些function检测以正确触发事件:
if ("createEvent" in document) { var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); element.dispatchEvent(evt); } else element.fireEvent("onchange");
MDNbuild议,在现代浏览器中有这样一种更简洁的方法:
// Assuming we're listening for eg a 'change' event on `element` // Create a new 'change' event var event = new Event('change'); // Dispatch it. element.dispatchEvent(event);
对于那些使用jQuery的人来说,有一个方便的方法: http : //api.jquery.com/change/