//表示表单项目是否通过验证
var flag = {"email":false,"nickname":false,"password1":false,"password2":false,"number":false};
   
$(function(){
//Email检查
window.funs = $("#txtEmail").blur(function(){
var email = $(this).val();
//检查是否为空
if(email == ""){
   $("#email\\.info").html("Email地址不能为空");
   return;
}
//检查格式
var pattern=/\b(^['_A-Za-z0-9-]+(\.['_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$)\b/;
if(!pattern.test(email)){
$("#email\\.info").html("Email格式不正确");
return;
}
//检查唯一性
$.post(
"/dang/user/checkemail.action",
{"email":email},
function(data){//服务器返回的ok值
if(data){
   $("#email\\.info").html("Email正确可用");
   flag.email = true;//email项通过检查
}else{
   $("#email\\.info").html("Email已被占用");
}
},"json"
);
});
//昵称检查
$("#txtNickName").blur(function(){
flag.ncikname=false;//设置未通过检查
var nickname=$(this).val();
//检查是非空
if(nickname ==""){
$("#name\\.info").html("昵称不能为空");
return;
}
//检查格式
var len = 0;
chgex = /[\u4e00-\u9fa5]/;
engex = /[a-zA-Z0-9]/;
for ( var i = 0; i < nickname.length; i++) {
if (chgex.test(nickname[i])) {
len += 2;
} else if (engex.test(nickname[i])) {
len += 1;
} else {
$("#name\\.info").html("你输入名字含非法字符 ");
return;
}
}
if (len < 4) {
$("#name\\.info").html("你输入的呢称太短!");
return;
}
if (len > 20) {
$("#name\\.info").html("你输入的呢称太长");
return;
}
//检查唯一性
$.post("/dang/user/nickname.action", 
{"nickname" : nickname},
function(data){//服务器返回的ok值
if(data){
$("#name\\.info").html("呢称输入正确");
flag.nickname=true; //昵称通过检查
return;
}else{
$("#name\\.info").html("呢称已被占用");
return;
}
}
,"json"
);
});
//密码1检查
$("#txtPassword").blur(function(){
var password =$(this).val();
//非空检查
if(password == ""){
$("#password\\.info").html("密码不能为空");
return;
}
//格式检查
var pattern=/^[a-zA-Z]\w{5,17}$/ ; 
// 验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
if(!pattern.test(password)){
$("#password\\.info").html("密码格式不正确");
return;
}
$("#password\\.info").html("密码输入正确");
flag.password1 = true;
});
//密码2检查
$("#txtRepeatPass").blur(function(){
var password =$(this).val();
//非空检查
if(password == ""){
$("#password1\\.info").html("密码不能为空");
return;
}
var ps= $("#txtPassword").val();
if(password != ps){
$("#password1\\.info").html("两次密码输入不一致");
return;
}
$("#password1\\.info").html("密码输入正确");
flag.password2 = true;
});
//验证码检查
//生成验证码
 $("#refresh").click(function() {  
        var rom = new Date();  
        $("#imgVcode").attr("src", "getRandomNumber?timestamp="+rom);  
    });  
//验证码检查
 $("#txtVerifyCode").blur(function(){
 var number = $(this).val();
//非空
 if(number == ""){
 $("#number\\.info").html("请输入验证码");
 return;
 }
//格式验证  
 if(number.length<4){
 $("#number\\.info").html("请输入完整验证码");
 return;
 }
//验证码验证
 $.post("/dang/user/checkNumberAction.action", 
{"number" : number},
function(data){//服务器返回的ok值
if(data){
 $("#number\\.info").html("验证码正确");
 flag.number=true;
return;
}else{
 $("#number\\.info").html("验证码错误");
return;
}
}
,"json"
);
 $("#number\\.info").html("");
 }); //判断是否允许提交表单
$("#f").submit(function(){
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++我想在这里回调上面的blur函数,怎么调用哦++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* $("#txtEmail").blur();
$("#txtNickName").blur();
$("#txtPassword").blur();
$("#txtRepeatPass").blur();
$("#txtVerifyCode").blur();*/
alert(flag.email+"   "+"email");
alert(flag.nickname+"   "+"nickname");
alert(flag.password1+"   "+"password1");
alert(flag.password2+"   "+"password2");
alert(flag.number+"   "+"number");
var ok = flag.email && flag.nickname &&
flag.password1 && flag.password2 && flag.number;
if(ok==false){
$("#txtEmail").blur();
$("#txtNickName").blur();
$("#txtPassword").blur();
$("#txtRepeatPass").blur();
$("#txtVerifyCode").blur();
alert("表单项正在检测或存在错误");
return false;
}
//验证码验证
return true;
});
});jqueryfunction回调

解决方案 »

  1.   

    好吧,你牛b了,回去学学基础吧,老兄~
    上面的blur用的是匿名函数,你是不能直接调用的,
    除非你把它封装出来,这样两边都能用.
      

  2.   

    看到$.post异步请求了。执行的时候不存在阻塞,会有意想不到的事情发生。建议换成$.ajax改为阻塞模式。
      

  3.   

    将blur函数放到一个function中直接调用就可以了 还有 不如用插件控制js 方便很多的
    如esayui
      

  4.   

    没有函数名,只有某id失去焦点的function,不懂怎么获取目标函数