使用fireEvent('onchange')的JavaScript +无效参数错误

时间:2013-04-10 21:13:28

标签: javascript javascript-events

一些简单的事件驱动代码。无论出于何种原因,我似乎无法将'onchange'作为参数传递给fireEvent()。在7/8中向我抛出一个invalide参数错误。这个项目需要是原生的。帮助不大?

自定义事件创建:

    createCustomEvent : function(eventName) {
        var evt;
        if(document.createEvent) {
            evt = document.createEvent('CustomEvent');
            evt.initEvent(eventName, true, true);
        }else if(document.createEventObject) {
            evt = document.createEventObject();
            evt.eventName = eventName;
        }
        return evt;
    },
    dispatchCustomEvent : function (el, evt) {
        if(el.dispatchEvent) {
            el.dispatchEvent(evt);
        }else if(el.fireEvent) {
            console.log('on'+evt.eventName); //onchange
            el.fireEvent('on'+evt.eventName, evt);
        }
    }

用法:

dispatchCustomEvent(element, createCustomEvent('change'));

1 个答案:

答案 0 :(得分:0)

好的,所以根据大多数文档,更改事件将触发任何元素,我引用: “当获得焦点时,当元素失去焦点并且其值发生变化时,会触发更改事件。”

https://developer.mozilla.org/en-US/docs/DOM/Mozilla_Event_Reference/change

但是,在< = ie8 onchange 中,除了表单元素之外,不会触发任何元素。这是非常蹩脚的imo,并使现代MVC自定义事件倾听和调度问题。

长话短说,在我的情况下,我使用模糊事件来捕获我的div元素的更改。这对我有用,因为div元素更新之间的焦点被删除了。这是一个幻灯片应用程序,其中两个div在堆栈中上下移动,从左到右依赖于当前位置。