2009-12-18 78 views
2

我在下面的代码中工作很好,我在jQuery中准备好的功能,当我填写表单并将焦点从输入元素更改为另一个运行ajax检查并分配一个CSS类到元素,显示如果验证或不。一切还好。如何在jQuery中定义函数?

id'喜欢用这个代码定义一个函数,所以我也可以在页面刚刚加载时调用它,所以如果表单填充在服务器端,并且模糊,但是我面对时也会执行检查麻烦在jQuery中定义函数。

这是在模糊运行的代码

$('#join_username').blur(function(){ 
    $('#join_username').addClass(\"join_form_input_checking\"); 
    $('#join_username').removeClass(\"join_form_input\");  
    $('#join_username').removeClass(\"join_form_input_error\");  
    $('#join_username').removeClass(\"join_form_input_verified\");  


    $.post(\"inc/viewlets/join_form/check_username.php\", { 
      join_username: $('#join_username').val() 
      }, 
      function(response){ 
        setTimeout(\"finishAjaxUsername('usernameResult', '\"+escape(response)+\"')\", 400); 
     if(escape(response)=='true') joinFormCheck[0]=true;  
     else joinFormCheck[0]=false; 

     checkFormArray(joinFormCheck);   
      } 
     );    

    return false; 
}); 
+0

你为什么要逃避字符串分隔符? – kiamlaluno 2009-12-18 18:02:58

回答

15

或者你可以使用使用普通函数的语法

function do_on_blur(){ 
    // your base. I'm in it 
} 

$("#join_username").blur(do_on_blur); 
15

简单地定义,而不是传递blur()一个匿名函数的函数:

$.myFunctionName = function() 
{ 
    // your code here 
} 

$("#join_username").blur($.myFunctionName); 

如果你想在回应被调用的函数一个事件(比如document.ready),就像调用普通函数一样调用它。

$(document).ready(function() 
{ 
    // -- define your function 
    $.myFunctionName = function() 
    { 
     //your code here 
    } 

    // -- add a callback to blur on an input 
    $("#join_username").blur($.myFunctionName); 

    // -- manually call the function once 
    $.myFunctionName(); 
}); 
+0

谢谢! 现在...我在ready()中定义了函数,在页面加载时如何运行此函数。 我想检查表单元素,因为它的加载,如果它有一个值=“我的字符串在这里”属性 – Mike 2009-12-18 15:58:17

+0

只需调用它就像你会正常的功能。所以,如果你希望它在文档准备就绪以及$(document).ready(function(){$ .myFunctionName();}); – typeoneerror 2009-12-18 16:11:42

+0

谢谢你!这真的是我正在寻找的! – Mike 2009-12-18 16:19:21

0

我认为你有无效的语法在这里:

$('#join_username').blur(function(){ 
    $(this) 
     .addClass("join_form_input_checking") 
     .removeClass("join_form_input");  
     .removeClass("join_form_input_error");  
     .removeClass("join_form_input_verified");  


    $.post("inc/viewlets/join_form/check_username.php", { 
     join_username: $(this).val() 
    }, function(response) { 
     setTimeout(function() { 
     finishAjaxUsername('usernameResult', escape(response)) 
     }, 400); 
     if(escape(response)=='true') { joinFormCheck[0]=true; } 
     else { joinFormCheck[0]=false; } 
     checkFormArray(joinFormCheck);   
    });     

    return false; 
}); 

尝试。然后,当然,如果你想要的功能是从,你可以简单地把它分配给一个变量模糊事件独立...所以你最终用:

var blurFunc = function() { ...function from above... }; 
$('#join_username').blur(blurFunc); 
0

如果你不希望创建一个jQuery插件,那么它足以传递给jQuery的功能,您要使用的函数的引用。当您仅需要该功能一次时,就会使用匿名功能。

function blur() {}; 

$('#join_username').blur(blur); 

通常在函数被多次使用时完成;通常情况下,您将使用匿名功能。