Opera无法识别绑定到表单“提交”事件的事件处理程序!

时间:2011-07-13 11:46:39

标签: javascript javascript-events opera onsubmit

编辑:这个问题很愚蠢,因为我在其他地方犯了错误导致它。

我决定今天在Opera上测试我的网站,看看它在Chrome和FF中完美运行..所以我为ubuntu下载了最新的Opera并尝试登录我的网站。的Bleh。

由于某种原因,它没有识别我绑定到表单的“submit”事件的任何函数,我需要进行验证等。我有通常的addEvent(element, eventtype, callback)执行对addEventListener或attachEvent的相关调用。

正如我所说,这在Chrome和Firefox中都非常有效。我甚至试过

addEvent(loginForm, 'submit', function(){alert("It works");});

但根本没有回应。所以它甚至不是像我最初想的那样停止默认动作,但实际上根本没有绑定事件!关于上面的例子,我可以确认loginForm确实包含对实际表单元素的引用。

有没有人知道Opera会发生什么?

编辑:下面是我的addEvent函数

function addEvent (obj, evt, callback) {
    if (evt=="mousewheel")
        evt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"
    if (obj.addEventListener){
        obj.addEventListener(evt, callback, false);
    } else {
        obj.attachEvent("on" + evt, callback);
    }
}

2 个答案:

答案 0 :(得分:0)

这是另一个无耻的框架插件......

YAHOO.Util.Event.on( loginForm, 'click', function(e){
    alert('It definitely works now!');
} );

如果您热衷于添加一些YUI / jquery,请发送ID:D

答案 1 :(得分:0)

我复制了你的代码,见下文:

window.onload = function(){

    var loginForm = document.getElementById("frm");

    function addEvent (obj, evt, callback) {
        if (evt=="mousewheel") {
            evt = (/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel"
        }
        if (obj.addEventListener){
            obj.addEventListener(evt, callback, false);
        } else {
            obj.attachEvent("on" + evt, callback);
        }
    }

    addEvent(loginForm, 'submit', function(){alert("It works");});
}

它有效。虽然我目前在Opera的PC上。

您是否尝试过使用Dragonfly查看是否有错误?