不要用submit按钮,用一个普通的<input type="button" />
在点击的时候,调用ajax,如果用户可用 ,就使用
document.getElementById("form的id").submit();

解决方案 »

  1.   

    function ValidateUser(userlogin,tempvalue){
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4){
                if(xmlHttp.responseText!="OK"){
                    alert('用户名已注册,请重新注册!');
                    return;
                }
            }
    }
      

  2.   

    script type="text/javascript">
    function $(obj){return document.getElementById(obj)}
    function regForm(obj){
    if(obj.user.value==""){
        alert("请输入您的用户名!");
        obj.user.focus();
        return false;
    }//前面已经判断过了,就不用再if了if(ValidateUser('userlogin',obj.user.value)){
     alert('用户名已注册,请重新注册!');
     return false;//处理过程不要放在函数里面,放在这外面一层
    };if(obj.email.value==""){
      alert("请重复输入您的邮件地址!");
      obj.email.focus();
      return false;}
    }var xmlHttp
    function ValidateUser(userlogin,tempvalue){
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4){
                if(xmlHttp.responseText!="OK"){
                  return false;
                }
            }
    }
        xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true);
        xmlHttp.send(null);
    }</script>
      

  3.   

    如果用户名存在 就把input的button设置为不可用
    button.disabled=true;
      

  4.   

    由于ajax是异步的,在其后执行的代码并不会等待ajax运行后的结果出现才判断是否执行,而是一直会执行下去,所以你在if(xmlHttp.readyState==4){}里面用return false或者return true是没有用的。所有的逻辑过程需要写在这个if(xmlHttp.readyState==4){}里面才行。
    也就是说,在ajax运行结束后,判断是否需要执行下去,如果需要继续添加用户,则在这个if(xmlHttp.readyState==4){}里面调用提交用户的函数才可以。
      

  5.   

    <script type="text/javascript">
    function $(obj){return document.getElementById(obj)}
    function regForm(obj){
    if(obj.user.value==""){
        alert("请输入您的用户名!");obj.user.focus();return false;
    }else{
        if(ValidateUser('userlogin',obj.user.value)){
            提交按钮.disabled="";
        }else{
            提交按钮.disabled="true";
        }

    }
    if(obj.email.value==""){alert("请重复输入您的邮件地址!");obj.email.focus();return false;}}var xmlHttp
    function ValidateUser(userlogin,tempvalue){
        xmlHttp=GetXmlHttpObject();
        xmlHttp.onreadystatechange=function(){
            if(xmlHttp.readyState==4){
                if(xmlHttp.responseText!="OK"){
                    alert('用户名已注册,请重新注册!');
                    return false;
                }
            }
    }
        xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),true);
        xmlHttp.send(null);
    }</script>
      

  6.   

    为什么这么做呢??先在页面上设置一个隐藏域
    可以用焦点事件啊。当失去焦点的时候,用ajax返回一个true or false
    然后进行判断,当为true时,显示这个隐藏域,清空输入框,同时返回焦点。、
      

  7.   

    xmlHttp.open("GET","validate.asp?act="+userlogin+"&user="+tempvalue+"&sid="+Math.random(),false); 这样改一下试试,
      

  8.   

    异步模式运行ajax,可以先让提交按钮disable,等到异步通过了再enable.