2010-05-22 105 views
10

這是我目前使用的嘗試來驗證表單。當我按下沒有輸入值的提交時,我得到每個輸入的錯誤消息。但是,不管我在newpassword2或newemail2中放置什麼,它們都不會「通過」驗證。我已經嘗試了從複製和粘貼到使每個單獨的一個字母都沒有成功的所有事情。也許我沒有正確使用equalTo屬性...jQuery驗證插件+等於不工作

我也驗證了所有選擇器的名稱與窗體上的輸入ID一致。此外,所有的輸入都包含在表單中,因此表單標籤之外沒有任何內容(我讀過這是其他人的問題)。

$(document).ready(function() { 
    $("#account_data").validate({ 
     rules: { 
      newpassword1: { required: true }, 
      newpassword2: { equalTo: "#newpassword1" }, 
      newemail1: { required: true, email: true }, 
      newemail2: { equalTo: "#newemail1" } 
     } 
    }); 
}); 

任何幫助將不勝感激!

謝謝!

-Tom-

+0

這個問題已經解決了......幾乎純粹的運氣。請參閱下面的更新。 – 2010-05-22 08:03:13

+2

如果問題已解決,您應該接受適當的解決方案... – dule 2014-01-15 21:49:27

回答

1

@湯姆嘗試

 newpassword1: { required: true }, 
     newpassword2: { required: true,equalTo: "#newpassword1"}, 
     newemail1: { required: true, email: true }, 
     newemail2: { required: true,email: true ,equalTo: "#newemail1" } 

或使用最新版本的驗證插件的

現在規則已經添加了密碼被要求設置爲true,第二個條件是password_again設置爲必填項true,並且必須使用密碼的id「等於」輸入字段。有了這些條件,我們就能夠實現我們想要的。不要忘記查看帖子的演示,看看它是如何工作的。有關此插件的更多文檔和資源,請訪問jQuery驗證插件

+2

你知道嗎?我得到它與我在原始帖子中發佈的完全相同的代碼。我改變的只是使用一個id和名稱作爲表單輸入。但是,我不知道這是否有必要,因爲如果我記得正確,名稱在(X)HTML嚴格中不驗證。 無論如何,驗證插件工作正常,我的問題現在已經過時...對不起,浪費你的時間! 順便說一句,我添加了其他屬性,你建議,它仍然工作得很好! 謝謝你的幫助! -Tom- – 2010-05-22 08:02:39

3

我和Tom有同樣的問題。解決方案是爲與密碼字段的名稱匹配的密碼字段創建一個id。 (正如湯姆所說的)。絕對是驗證代碼中的一個錯誤,因爲它應該只依賴名稱字段。哦...

-Greg

7

當使用equalTo時,您必須使用表單名稱和ID。例如:

<input type="password" name="password" id="password" value="" /> 
<input type="password" name="password_mirror" value="" /> 

$("#register_user").validate({ 
     rules: { 
      'password_mirror': { 
       minlength: 5, 
       equalTo: "#password" 
      } 
     }, 
     messages: { 
      'password_mirror': { 
       minlength: "Your password must be at least 5 characters long", 
       equalTo: "Please enter the same password as above" 
      } 
     } 
    }); 
17

如果您將使用id =「密碼」,它將不起作用。您必須使用其他名稱作爲ID。

在規則的所有按鍵對象指的是input.name而不是input.id

+0

太棒了!謝謝。 – 2011-11-26 17:07:06

+1

有什麼解釋?看完源代碼後我看不出原因。 – youzipi 2016-05-25 05:59:48

+0

我也很好奇這裏的「爲什麼」 – 2016-10-27 19:46:03

0

使用「equalTo」我們需要採取以下幾點護理前:

  1. 使用不同的文字輸入元素名稱和ID。在 「equalTo」 的比賽,而不是輸入元素名稱

  2. 使用輸入元素ID:

<html> 
 
<head> 
 
    <title></title> 
 
    <script src="jquery-1.12.0.min.js"></script> 
 
    <script src="jquery.validate.min.js"></script> 
 
    <script> 
 
      $(document).ready(function(){ 
 
        $('#btnSubmit').click(function(){ 
 
         $("form").validate({ 
 
         rules: { 
 
          pwd: { 
 
           required: true, 
 
           minlength : 6 
 
          }, 
 
          conf_pwd: { 
 
            required: true, 
 
            minlength : 6, 
 
            equalTo: "#id_pwd" 
 
           } 
 
         }, 
 
         messages: { 
 
           pwd: { 
 
            required: "Please enter the password.", 
 
            minlength: "Your password must be at least 6 characters long" 
 
           }, 
 
           conf_pwd: { 
 
           required: "Please enter the confirm password.", 
 
           minlength: "Your password must be at least 6 characters long", 
 
           equalTo: "Please enter the same password as above" 
 
           } 
 
         }, 
 
         submitHandler: function(form) { 
 
           form.submit(); 
 
         } 
 
      }); 
 
        }); 
 
      }); 
 
    </script> 
 
</head> 
 
<body> 
 
     <div> 
 
     <form id="data" action="" method="post"> 
 
     <div class="form-group row"> 
 
     <label>Password:</label> 
 
      <div> 
 
      <input id="id_pwd" name="pwd" type="password" /> 
 
      </div> 
 
     </div> 
 
     <div> 
 
     <label>Confirm Password:</label> 
 
      <div> 
 
      <input id="id_conf_pwd" name="conf_pwd" type="password" /> 
 
      </div> 
 
     </div> 
 
     <div> 
 
     <div> 
 
      <div> 
 
\t \t  <input type="submit" id="btnSubmit" name="submit" value="Reset Password"> 
 
\t  </div> 
 
     </div> 
 
     </div> 
 
    </form> 
 
     </div> 
 
</body> 
 
</html>