我在下面的代码在jquery中的ready函数中工作得很好,当我填充表单并将焦点从input元素更改为另一个运行ajax检查并为元素分配css类时,显示是否已经过验证或不。一切都好。
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 :(得分: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();
});
答案 1 :(得分:15)
或者您可以使用常规函数语法
function do_on_blur(){
// your base. I'm in it
}
和
$("#join_username").blur( do_on_blur );
答案 2 :(得分: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;
} );
试试吧。然后,当然如果你想让函数与blur事件分开,你只需将它分配给一个变量......所以你最终会得到:
var blurFunc = function() { ...function from above... };
$('#join_username').blur( blurFunc );
答案 3 :(得分:0)
如果你不想创建一个jQuery插件,那么将jQuery函数传递给你想要使用的函数就足够了。当您只需要该功能一次时,将使用匿名函数。
function blur() {};
$('#join_username').blur(blur);
通常在函数被多次使用时完成;通常,您将使用匿名函数。