2011-08-11 32 views
0

我无法得到此表单提交正确。如果我的按钮类型为“提交”,它总是提交,如果我使用“按钮”作为从不提交的类型,则ajax调用会带来正确的值,所以即使if声明遵循正确的路径,但它看起来似乎重要。jquery提交失效

<script type="text/javascript"> 
$(document).ready(function(){ 
$("#submitButton").click(function(e) { 
     var un = $('#username').val(); 
     $('#mike').html("");  
      $.ajax(
      {    
       type: "POST", 
       url: "Utilities/CheckUsername.php", 
       data: "un="+ un, 
       success: function(data2) 
       {     
        if(data2=="Username Does Not Exist") 
        {   
         $("#login2").submit();     
        } 
        else 
        { 
         $('#mike').html(data2); 
         return false;      
        }     
       } 

      }); 
      }); 

      }); 
      </script> 
</head> 
<body> 
     <form name="login" id="login2" method="post" action="dsds.html"> 
     UserName<input type="text" name="username" id="username"value=""> 
     <br/> 
     Password<input type="text" name="password" id="password" value=""> 
     <br/> 
     Password Again<input type="text" name="passwordagain" id="passwordagain" value=""> 
     <br/> 
     <input type="hidden" name="NewClass" id="NewClass" value="true"> 
     <br/> 
     <input type="submit" name="no" id="submitButton" value="submit"> 
    </form> 
    <span id = "mike"></span> 
</body> 
</html> 

编辑: 我这里添加的回报虚假和它的作品,但为什么呢?我刚刚从click事件

else 
      { 
       $('#mike').html(data2); 

      }     
     } 

    }); 
    return false; 
    }); 

回答

3

你只需要return false从您提交事件处理函数返回false。你在那里的return false没有执行,直到之后异步ajax调用完成。

或者,您可以使用e.preventDefault()它做同样的事情。

这两种方法都可以防止发生默认行为,即提交表单。

+0

解决我的问题。抱怨是$ .post(..)文件未定义。 –

2

我建议你的事件处理程序绑定到submit事件的形式为:

$('#login2').submit(function(event) { 
    event.preventDefault(); 
    //... 
}); 

你必须避免的事件,这是提交表单的默认操作。这是通过event.preventDefault[docs]完成的。 Ajax回调中的return false将不起作用,因为在接收到响应之前,事件处理程序返回之前

如果你这样做,你必须设置一些种类标志的看到该进程的状态,您是:

var nameAvailable = false; 

$('#login2').submit(function(event) { 
    if(!nameAvailable) { 
     event.preventDefault(); // don't submit form 
     //... 
     $.ajax({ 
      success: function() { 
       // if name available 
       nameAvailable = true; 
       $('#login2').submit(); 
      } 
     }); 
    } 
});