2011-08-11 33 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(); 
      } 
     }); 
    } 
});