为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

jeck猫 2019-10-09 15:56:02
如何以编程方式在输入上强制发生onchange事件?我已经尝试过这样的事情:var code = ele.getAttribute('onchange');eval(code);但是我的最终目标是触发所有侦听器功能,但这似乎不起作用。只是更新'value'属性也不会。
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

创建一个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 });


查看完整回答
反对 回复 2019-10-09
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

由于某种原因,ele.onchange()在我的页面上的IE中为我抛出了“未找到方法”的假象,因此我最终使用了Kolten提供的链接中的此函数,并调用了fireEvent(ele,'change'), :


function fireEvent(element,event){

    if (document.createEventObject){

        // dispatch for IE

        var evt = document.createEventObject();

        return element.fireEvent('on'+event,evt)

    }

    else{

        // dispatch for firefox + others

        var evt = document.createEvent("HTMLEvents");

        evt.initEvent(event, true, true ); // event type,bubbling,cancelable

        return !element.dispatchEvent(evt);

    }

}

但是,我确实创建了一个测试页面,该页面确认调用应该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仍然有效。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号