html中的一个按钮的onclick事件
<INPUT TYPE="submit" value="提交" name="yes">&nbsp;&nbsp;<INPUT TYPE="reset">
为什么我输入了一个不重复的用户名  flag还是为false 总提示用户名存在啊?
什么问题 高手看看  先谢谢啦
function checkforinfo()
{
var uname=$("#uname").val();
var upass=$("#upass").val();
var rpass=$("#rpass").val();
var email=$("#email").val();
var name=$("#name").val();
inforeport()
if(uname.length<6||uname.length>18)//uname的正则。
{
alert("用户名长度出错");
return false;
}
if(name.length>12||name.length==0)//uname的正则。
{
alert("昵称长度出错");
return false;
}
if(upass.length<6||upass.length>18)
{
alert("密码长度出错");
return false;
}
if(upass!=rpass)
{
alert("两次密码不一致");
return false;
}
var rule = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
        if (!rule.test(email)) {
alert("信箱不正确");
return false;
        }
if(flag==false)
{
alert("用户名已经被使用");
return false;
} return true;

}function inforeport()
{
var uname=$("#uname").val();
if(uname.length<6||uname.length>18)
{
$("#isRepeat").html("用户名长度出错");
flag=false;
return false;
}
$.post("../Ajax/check.ajax.php",{uname:uname},function(data)
{
if(data=="1")
{
flag=false;
$("#isRepeat").html("该注册名已经存在");
}
else
{
flag=true;
$("#isRepeat").html("该注册名可以使用");
}
});
}

解决方案 »

  1.   

    是不是用户名长度小于6或大于18了
    function inforeport() {
    var uname = $("#uname").val();
     ///用户名长度小于6大于18不行
    if (uname.length < 6 || uname.length > 18) {
    $("#isRepeat").html("用户名长度出错");
    flag = false;
    return false;
    }
    $.post("../Ajax/check.ajax.php", {
    uname: uname
    },
    function(data) {
    if (data == "1") {
    flag = false;
    $("#isRepeat").html("该注册名已经存在");
    } else {
    flag = true;
    $("#isRepeat").html("该注册名可以使用");
    }
    });
    }
      

  2.   

    不是的  经过我的测试  我发现checkforinfo()方法中inforeport()一下的代码都运行了 inforeport()的代码才运行  我用alert测试的  顺序不对  想不明白  怎么inforeport()会延迟运行 
      

  3.   

    flag在哪里出来的,是后台返回的么,如果是后台返回的,请在后台看看
      

  4.   

    flag在方法外边定义的   现在确定是延迟  因为是POST 但是用该怎么解决啊?
      

  5.   


    用同步AJAX:bodyContent = $.ajax({
          url: "script.php",
          global: false,
          type: "POST",
          data: ({id : this.getAttribute('id')}),
          dataType: "html",
          async:false,//这个设为false就行了
          success: function(msg){
             alert(msg);
          }
       }
    ).responseText;不要用post,post调用的也是Ajax,不过是异步的
      

  6.   


    $.post("../Ajax/check.ajax.php", {
            uname: uname
        }你的代码可以这么改:$.Ajax({
        url: "../Ajax/check.ajax.php",
        type: "POST",
        data: {uname: uname},
        success: function(data) {
            if (data == "1") {
                flag = false;
                $("#isRepeat").html("该注册名已经存在");
            } else {
                flag = true;
                $("#isRepeat").html("该注册名可以使用");
            }
        }
    })
      

  7.   

    少了关键东西:$.Ajax({ 
    url: "../Ajax/check.ajax.php", 
    type: "POST", 
    data: {uname: uname},
    async:false,//这个忘了+了
    success: function(data) { 
    if (data == "1") { 
    flag = false; 
    $("#isRepeat").html("该注册名已经存在"); 
    } else { 
    flag = true; 
    $("#isRepeat").html("该注册名可以使用"); 
    }

    });
      

  8.   

    一到AJax 就说 对象不支持此属性或方法
      

  9.   

    OK  解决了 Ajax大写了