2013-10-25 62 views
0

我有使用<form action="" method="post">提交本身就是一個PHP頁面。我有一些jQuery字段驗證正在進行,並且希望在驗證未通過時阻止提交表單。但是,即使驗證沒有通過,它也會繼續提交。的JavaScript/jQuery的防止表單提交的時候其實並沒有使用JavaScript/jQuery的提交功能

我錯過了什麼?我需要實際上一個jQuery .submit()功能,以防止提交使用按鈕(而不是提交)? (這裏有一個fiddle

<form action="" method="POST"> 
    <label for="email">Username: <br /> 
    <input id="email" name="email" class="phPasswordTxtInputField" type="text" size="33" value=""><br /> 

    <label for="tmp_password">Temp password:<br /> 
    <input id="tmp_password" name="tmp_password" type="password" minlength="5" value="" default="" size="33" caption=""><br /> 

    <label for="new_password">New password:<br /> 
    <input id="new_password" name="new_password" type="password" minlength="5" value="" default="" size="33" caption=""><br /> 

    <label for="verify_password">Confirm password:<br /> 
    <input id="verify_password" name="verify_password" type="password" minlength="5" value="" default="" size="33" caption=""><br /> 

    <div style="margin: 0px 0px 0px 160px;" id="lblConfirmPasswordMessage"></div> 
    <input type="submit" id="submit_password" value="Reset Password" /> 
</form> 

<script> 
    function checkPasswordVerify(p,c,objId) { 
     if(p != c) { 
      var el = $(objId); 
      $(objId).html('<span class="passwordStrength">Please make sure the password and confirmation match.</span>'); 
      return false; 
     } 
     return true; 
    } 

    $('#submit_password').click(function() { 
     checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage'); 
    }); 
</script> 

回答

3

你需要一個return聲明在點擊處理程序:

$('#submit_password').click(function() { 
    return checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage'); 
}); 

而且,這將是更好地做到這一點的形式的submit處理程序,而不是提交按鈕的click處理程序。表單可以在不點擊提交按鈕的情況下提交。

+0

確認。我知道這很簡單。謝謝。 – EmmyS

+0

不要擔心,你不是第一個,你不會是最後一個。 – Barmar

2

你實際上不是正在做任何返回值爲checkPasswordVerify的東西。你可能想要更多的東西一樣:

$('#submit_password').click(function() { 
    return checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage'); 
}); 

或者:

$('#submit_password').click(function(e) { 
    if(!checkPasswordVerify($(this).val(), $('#new_password').val(), '#lblConfirmPasswordMessage')) 
     e.preventDefault(); 
});