var rPic="<img src='images/right.gif'>";
//验证用户名
function checkName()
{

var nameVal=$.trim($("#userName").val());
if(nameVal=="")
{
$("#errName").html("用户名不能为空");
return false;
}
if(nameVal.length<0||nameVal.length>20)
{
$("#errName").html("用户名长度不在有效范围");
return false;
}
$("#errName").html(rPic);
return true;
}
//交互后台,验证用户名是否存在
function checkNameExist()
{
var nameVal=$.trim($("#userName").val());
$.get("user/createUser.action?userName="+nameVal,null,function(data)
{
if("ok"==data)
{
$("#errName").html(rPic);
return true;
}else{
$("#errName").html("用户名已存在");
return false;
}
});
}
//鼠标划过事件验证
$(document).ready(function()
{
$("#userName").blur(function()
{
if(checkName())
checkNameExist();
});

});
function createUser()
{
var nameVal=$.trim($("#userName").val());
if(!checkName())
return;
if(!checkNameExist())
return;
$.get("user/addUser.action?userName="+nameVal,},function(data)
{
if("success"==data)
{
alert("创建用户成功!");
window.location.href="user/home.action";
return;
}
alert("服务器忙,请稍后重试");
window.location.href="user/createUser.jsp";
return;
});
}问题就在最后这一下了 if(!checkNameExist())-->这里只要一调用那种交互后台的方法,整个验证就失效了
验证不出了。很疑惑啊

解决方案 »

  1.   

    楼主搞错ajax的回调函数怎么用了 把你的ajax改成同步的
      

  2.   

    http://api.jquery.com/jQuery.ajax/你直接访问user/createUser.action?userName=xxx能成功检查用户名不
      

  3.   

    if(!checkNameExist())
            return;
    你checkNameExist里的ajax请求如果是异步 服务器端还没有响应回来 客户端会继续往下面走
    改成同步的就OK了 具体找jquery ajax的async参数 但是你的结构写的有问题 submit应该是在ajax的回调函数里提交才对
      

  4.   

    原来是这样啊,我还看楼主都没有在其他地方调用createUser()就没看这个函数了。