如何以编程方式在输入上强制发生onchange事件?

如何以编程方式在输入上强制发生onchange事件?


我已经尝试过这样的事情:


var code = ele.getAttribute('onchange');

eval(code);

但是我的最终目标是触发所有侦听器功能,但这似乎不起作用。只是更新'value'属性也不会。


jeck猫
浏览 435回答 3
3回答

元芳怎么了

创建一个Event对象并将其传递给dispatchEvent元素的方法:var element = document.getElementById('just_an_example');var event = new Event('change');element.dispatchEvent(event);这将触发事件侦听器,无论它们是通过调用addEventListener方法还是通过设置onchange元素的属性进行注册的。如果您希望事件冒泡,请将第二个参数传递给Event构造函数:var event = new Event('change', { bubbles: true });

翻翻过去那场雪

由于某种原因,ele.onchange()在我的页面上的IE中为我抛出了“未找到方法”的假象,因此我最终使用了Kolten提供的链接中的此函数,并调用了fireEvent(ele,'change'), :function fireEvent(element,event){&nbsp; &nbsp; if (document.createEventObject){&nbsp; &nbsp; &nbsp; &nbsp; // dispatch for IE&nbsp; &nbsp; &nbsp; &nbsp; var evt = document.createEventObject();&nbsp; &nbsp; &nbsp; &nbsp; return element.fireEvent('on'+event,evt)&nbsp; &nbsp; }&nbsp; &nbsp; else{&nbsp; &nbsp; &nbsp; &nbsp; // dispatch for firefox + others&nbsp; &nbsp; &nbsp; &nbsp; var evt = document.createEvent("HTMLEvents");&nbsp; &nbsp; &nbsp; &nbsp; evt.initEvent(event, true, true ); // event type,bubbling,cancelable&nbsp; &nbsp; &nbsp; &nbsp; return !element.dispatchEvent(evt);&nbsp; &nbsp; }}但是,我确实创建了一个测试页面,该页面确认调用应该onchange()起作用:<input id="test1" name="test1" value="Hello" onchange="alert(this.value);"/><input type="button" onclick="document.getElementById('test1').onchange();" value="Say Hello"/>编辑:ele.onchange()不起作用的原因是因为我实际上没有为onchange事件声明任何东西。但是fireEvent仍然有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript