首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何以编程方式在输入上强制执行onchange事件?

如何以编程方式在输入上强制执行onchange事件?
EN

Stack Overflow用户
提问于 2008-09-25 22:32:53
回答 7查看 274K关注 0票数 161

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

我尝试过这样的东西:

代码语言:javascript
复制
var code = ele.getAttribute('onchange');
eval(code);

但我的最终目标是触发任何侦听器函数,这似乎不起作用。也不只是更新“value”属性。

EN

回答 7

Stack Overflow用户

发布于 2008-12-04 11:51:46

在jQuery中,我主要使用:

代码语言:javascript
复制
$("#element").trigger("change");
票数 103
EN

Stack Overflow用户

发布于 2008-09-25 23:18:33

由于某种原因,ele.onchange()在我的页面上的IE中抛出了一个“找不到方法”的异常,所以我最终从Kolten提供的链接中使用了这个函数,并调用了fireEvent(ele,'change'),这是有效的:

代码语言:javascript
复制
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()应该有效:

代码语言:javascript
复制
<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仍然可以正常工作。

票数 23
EN

Stack Overflow用户

发布于 2008-09-25 23:06:26

取自QUnit的底部

代码语言:javascript
复制
function triggerEvent( elem, type, event ) {
    if ( $.browser.mozilla || $.browser.opera ) {
        event = document.createEvent("MouseEvents");
        event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
            0, 0, 0, 0, 0, false, false, false, false, 0, null);
        elem.dispatchEvent( event );
    } else if ( $.browser.msie ) {
        elem.fireEvent("on"+type);
    }
}

当然,您可以将$.browser替换为您自己的浏览器检测方法,使其独立于jQuery。

要使用此函数:

代码语言:javascript
复制
var event;
triggerEvent(ele, "change", event);

这基本上会触发真正的DOM事件,就好像实际发生了什么变化一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/136617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档