仅在事件触发时调用函数

时间:2014-10-27 18:42:32

标签: javascript jquery

我有以下功能:

format : function(){
   //function body
   if(condition){
       //execute this condition only on focus event 
   }
}

在页面加载和输入元素的焦点上调用此函数。我在这个函数中有一个条件,我只想在从焦点事件手动调用此函数而不是在页面加载时调用此函数。有没有办法实现这个目标?

有时会出现“条件”的情况。 if语句在页面加载时也是如此。任何帮助将不胜感激。提前谢谢。

6 个答案:

答案 0 :(得分:3)

分为两个功能:

format: function() {
    //Do stuff for focus
}
onload: function() {
    //Do stuff for onload
    this.format();
}

答案 1 :(得分:2)

您只需检查是否存在event参数:

format: function(event) {
    if (event) {
        // called form an event
    } else {
        // called manually (without a parameter)
    }
}

为了进一步提高稳定性,请检查event.type参数 - 它将包含触发事件的名称。

答案 2 :(得分:2)

只需使用事件参数。

format : function(e){
   //function body
   if(e && e.type == 'focus'){
       //execute this condition only on focus event 
   }
}

演示:http://jsfiddle.net/mbL5ohwr/

答案 3 :(得分:0)

当你在焦点上手动调用并且检查没有像特殊关键字" arguments"这样的参数时,你可以只是一个参数,当你在没有参数的页面加载上调用它时,长度将为零,否则它为零不会为零,因此只有焦点功能才有条件

format : function(){

 if(arguments.length){
   //execute this condition only on focus event 
 }
 }

答案 4 :(得分:0)

您可以使用例如this === document.activeElement$(this).is(':focus')来检查元素是否具有焦点。如果该功能是通过焦点事件触发的,则会返回true,如果他们从onload事件中调用,则会返回false

我希望这能帮到你!

答案 5 :(得分:0)

只想分享: 这对我提供的解决方案有用,谢谢它:

format : function(e){
 //function body
 if(e && e.type == 'focus'){
   //execute this condition only on focus event 
 }
}

仅仅是一个FYI,我们没有明确需要传递事件参数,它可以像这样简单:

format : function(){
 //function body
 if(e && e.type == 'focus'){
    //execute this condition only on focus event 
 }
}

默认情况下会引用它所引发的事件。感谢所有的输入。