事件未在Firefox中定义 [英] event not defined in Firefox

查看:102
本文介绍了事件未在Firefox中定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我注意到其他一些类似的帖子,但没有回答我的问题,这就是为什么我发布这个。



我试图做一个简单的表单,每个input / textarea元素在被onblur效果和值===触发时变成红色。下面的代码可以和Crhome和IE一起工作,但是在Firefox的事件没有定义的时候 - 尽管我正在通过一个事件。 / p>

  //声明gloabl变量
var srcForm = document.myForm;
var nameField = srcForm.nameTxt;
var emailField = srcForm.emailTxt;
var commentsField = srcForm.comments;

//字段onfocus事件函数
函数focusClear(event){
var eSrc = nuahs.eventUtility.eventSource(event);
if(eSrc.className ===invalid){
eSrc.className =;
eSrc.value =;



//函数用于字段onblur事件
函数blurCheck(event){
var eSrc = nuahs.eventUtility.eventSource(event) ;
if(eSrc.value ===){
eSrc.className =invalid;
eSrc.value =这个字段是必需的;



//为每个字段上的焦点事件设置事件处理程序
nuahs.eventUtility.addEvent(nameField,focus,function(){ focusClear(事件)});
nuahs.eventUtility.addEvent(emailField,focus,function(){focusClear(event)});
nuahs.eventUtility.addEvent(commentsField,focus,function(){focusClear(event)});

//为每个字段上的焦点事件设置事件处理程序
nuahs.eventUtility.addEvent(nameField,blur,function(){blurCheck(event)});
nuahs.eventUtility.addEvent(emailField,blur,function(){blurCheck(event)});
nuahs.eventUtility.addEvent(commentsField,blur,function(){blurCheck(event)});

所以,你可以看到 - 在底部 - 我用blurCheck和focusCheck功能,并通过事件。因此,我不知道为什么FF不认识它!



nuahs对象在另一个脚本中只是一个简单的事件实用程序,但为了完整性,您可以在下面看到它:

  var nuahs = new Object(); 

nuahs.eventUtility = {
addEvent:function(){$ b $ if(typeof addEventListener!==undefined){
return function(obj,evt, fn){
obj.addEventListener(evt,fn,false);
};
} else {
return function(obj,evt,fn){
obj.attachEvent(on+ evt,fn);
};
}
removeEvent:function(){
if(typeof addEventListener!==undefined){
return function(obj,evt, fn){
obj.removeEventListener(evt,fn,false);
};
} else {
return function(obj,evt,fn){
obj.detachEvent(on+ evt,fn);
};

(),
eventSource:function(event){
if(typeof addEventListener!==undefined){
return event.target;

} else {
return event.srcElement;
}
preventDefault:function(){
if(typeof addEventListener!==undefined){
return function(event){
event.preventDefault();
}
} else {
return function(event){
event.returnValue = false; (){
}
}
}(),
stopEvent:function(){//停止事件捕获和冒泡
if(typeof addEventListener!==undefined ){
return function(event){
event.stopPropagation();
}
} else {
return function(event){
event.cancelBubble = true;



$ b code

$ b $ p >任何帮助非常感谢!

解决方案

你忘了传递事件对象。这只是一个旧的IE版本的全球。

  nuahs.eventUtility.addEvent(nameField,focus,function(event){ focusClear(事件)}); 
nuahs.eventUtility.addEvent(emailField,focus,function(event){focusClear(event)});
nuahs.eventUtility.addEvent(commentsField,focus,function(event){focusClear(event)});

甚至更好的做法是保存这个 in如果您的实用程序库将其设置为适当的值:

  nuahs.eventUtility.addEvent(nameField,focus,focusClear); 
nuahs.eventUtility.addEvent(emailField,focus,focusClear);
nuahs.eventUtility.addEvent(commentsField,focus,focusClear);


I've noticed a couple of other posts on here of a similar nature, but none answer my question, which is why I'm posting this.

I'm trying to make a simple form, whereby each input/textarea element turns red when it is triggered by an onblur effect and the value === "". The following code works fine with Crhome and IE, but in Firefox 'event is not defined' - even though I'm passing through an event.

See below code.

//declare gloabl variables
var srcForm = document.myForm;
var nameField = srcForm.nameTxt;
var emailField = srcForm.emailTxt;
var commentsField = srcForm.comments;

//function for field onfocus events
function focusClear (event) {
var eSrc = nuahs.eventUtility.eventSource(event);
if(eSrc.className === "invalid") {
    eSrc.className = "";
    eSrc.value = "";    
}
}

//function for field onblur events
function blurCheck (event) {
var eSrc = nuahs.eventUtility.eventSource(event);
if(eSrc.value === "") {
    eSrc.className = "invalid";
    eSrc.value = "This field is required";  
}
}

//set up event handlers for focus events on each field
nuahs.eventUtility.addEvent(nameField, "focus", function() { focusClear(event)});
nuahs.eventUtility.addEvent(emailField, "focus", function() { focusClear(event)});
nuahs.eventUtility.addEvent(commentsField, "focus", function() { focusClear(event)});

//set up event handlers for focus events on each field
nuahs.eventUtility.addEvent(nameField, "blur", function() { blurCheck(event)});
nuahs.eventUtility.addEvent(emailField, "blur", function() { blurCheck(event)});
nuahs.eventUtility.addEvent(commentsField, "blur", function() { blurCheck(event)});

So, you can see - at the bottom - I'm handling my events with the blurCheck and focusCheck functions, and passing in the event. Therefore I have not a clue why FF does not recognize it!!

The nuahs object is just a simple event utility in another script, but for completeness you can see it below:

var nuahs = new Object();

nuahs.eventUtility = {
addEvent: function() {
    if(typeof addEventListener !== "undefined") {
        return function(obj, evt, fn) {
            obj.addEventListener(evt, fn, false);   
        };
    } else {
        return function(obj, evt, fn) {
            obj.attachEvent("on" + evt, fn);    
        };
    }
}(),
removeEvent: function() {
    if(typeof addEventListener !== "undefined") {
        return function(obj, evt, fn) {
            obj.removeEventListener(evt, fn, false);    
        };
    } else {
        return function(obj, evt, fn) {
            obj.detachEvent("on" + evt, fn);    
        };
    }
}(),
eventSource: function(event) {
    if (typeof addEventListener !== "undefined") {
        return event.target;    

    } else {
        return event.srcElement;    
    }
},
preventDefault: function() {
    if (typeof addEventListener !== "undefined") {
        return function(event) {
            event.preventDefault(); 
        }
    } else {
        return function(event) {
            event.returnValue = false;  
        }
    }
}(),
stopEvent: function() { //to stop event capture and bubbling
    if (typeof addEventListener !== "undefined") {
        return function(event) {
            event.stopPropagation();    
        }
    } else {
        return function(event) {
            event.cancelBubble = true;
        }
    }
}()
} 

Any help VERY much appreciated!

解决方案

You forgot to pass around the event object. It's only a global in old IE versions.

nuahs.eventUtility.addEvent(nameField, "focus", function(event) { focusClear(event)});
nuahs.eventUtility.addEvent(emailField, "focus", function(event) { focusClear(event)});
nuahs.eventUtility.addEvent(commentsField, "focus", function(event) { focusClear(event)});

Or even better, to preserve this in case your utility library sets it to a proper value:

nuahs.eventUtility.addEvent(nameField, "focus", focusClear);
nuahs.eventUtility.addEvent(emailField, "focus", focusClear);
nuahs.eventUtility.addEvent(commentsField, "focus", focusClear);

这篇关于事件未在Firefox中定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆