首先,请各位包涵,我本人对 JS 不是很熟,不知道“触发change事件”和“触发onchange事件”哪个更加合适。有园友知道的麻烦指出,先行谢过。
起因是这样的,工作上需要在浏览器页面上配置一些信息,同时需要配置的有好几百个。具体是需要在一个 HTML 的input
输入框里面输入自己需要的文本,然后保存。而这个input
框(猜测,因为页面不是我写的)是绑定了一个onchange
事件的,当其中的内容修改后,这个事件会触发,然后保存才会生效。而如果直接用 JS 来给这个input
框赋值的话,这个onchange
事件是不会触发的。
于是我上网找了好久,有说用trigger("change")
来触发的,但我试了并不行。更无奈的是,网上绝大部分文章都是在说,如果去绑定这个onchange
事件,而我要的是触发,而且问了好几个技术群里的朋友,几乎所有人都觉得我是在问如何绑定这个事件,最终写了个示例演示出来才能给他们说清楚。
今天不得已之下,到 Google 搜索了一下,在 StackOverflow 上找到了方法。原理是要先创建并初始化一个 change 事件,然后再用 dispatchEvent 去触发。代码如下:
var event = document.createEvent("HTMLEvents");
event.initEvent("change", true, true);
document.querySelector("#id").dispatchEvent(event);
参考:
https://stackoverflow.com/questions/2490825/how-to-trigger-event-in-javascript
http://www.w3school.com.cn/jsref/event_initevent.asp