2013-02-05 141 views
45

我正在嘗試使用jQuery驗證插件來確認我的密碼條目。用jQuery驗證密碼

但是,我不希望它是必填字段。

只要用戶想要更改密碼,他們就需要確認它。

如果不是,則不應驗證這兩個字段。

jQuery('.validatedForm').validate({ 
    rules: { 
     password: { 
      required: true, 
      minlength: 5 
     }, 
     password_confirm: { 
      required: true, 
      minlength: 5, 
      equalTo: "#password" 
     } 
    } 
}); 

這是完美的工作,但同樣,這兩個領域都是必需的。

我想有這個可選的,以防有人只是想改變他們的電子郵件或用戶名,並保留密碼。

+0

爲什麼不關閉:required:false? –

+0

是的,我試過了,但確認無效了。 我的意思是password_confirm字段是必需的如果密碼字段不爲空 – ldrocks

+0

哦,那我想你可能需要一個自定義的驗證器:http://docs.jquery.com/Plugins/Validation/Validator/addMethod –

回答

101

刪除required: true規則。

演示:Fiddle

jQuery('.validatedForm').validate({ 
      rules : { 
       password : { 
        minlength : 5 
       }, 
       password_confirm : { 
        minlength : 5, 
        equalTo : "#password" 
       } 
      } 
+1

沒有工作。那麼它總是說「請再次輸入相同的值」 即使這兩個字段都是空的 – ldrocks

+1

它正在我的鉻合金中工作,您是否嘗試了小提琴 –

+1

哦。我的錯。第一個字段缺少id標記 對不起.... – ldrocks

17

就在這裏快速磬,希望能夠幫助別人......尤其是隨着新版本(因爲這是2歲以下)...

,而不必在JS中定義了一些靜態字段,也可以使用data-rule-*屬性。您可以使用內置規則以及自定義規則。對於內置規則,請參閱http://jqueryvalidation.org/documentation/#link-list-of-built-in-validation-methods

實施例:

<p><label>Email: <input type="text" name="email" id="email" data-rule-email="true" required></label></p> 
<p><label>Confirm Email: <input type="text" name="email" id="email_confirm" data-rule-email="true" data-rule-equalTo="#email" required></label></p> 

注意data-rule-*屬性。

4

它的工作原理,如果值id和name值是不同的:

<input type="password" class="form-control"name="password" id="mainpassword"> 
password: {  required: true,  } , 
cpassword: {required: true, equalTo: '#mainpassword' }, 
+0

correct ..對我來說很好 –

0
jQuery('.validatedForm').validate({ 
     rules : { 
      password : { 
       minlength : 5 
      }, 
      password_confirm : { 
       minlength : 5, 
       equalTo : '[name="password"]' 
      } 
     } 

一般情況下,你不會用id="password"這樣。 所以,你可以使用[name="password"]代替"#password"

1

我實現它在遊戲框架,對我來說像這樣工作:

1)請注意,我用數據規則equalTo輸入標籤的id inputPassword1。用戶窗體在我的模態 的代碼段:因爲我內的模態

$(document).on("click", ".createUserModal", function() { 
     $(this).find('#userform').validate({ 
      rules: { 
       firstName: "required", 
       lastName: "required", 
       nationalId: { 
        required: true, 
        digits:true 
       }, 
       email: { 
        required: true, 
        email: true 
       }, 
       optradio: "required", 
       password :{ 
        required: true, 
        minlength: 5 
       }, 
       password2: { 
        required: true 
       } 
      }, 
      highlight: function (element) { 
       $(element).parent().addClass('error') 
      }, 
      unhighlight: function (element) { 
       $(element).parent().removeClass('error') 
      }, 
      onsubmit: true 
     }); 

    }); 

用於驗證

<div class="form-group"> 
    <label for="pass1">@Messages("authentication.password")</label> 
    <input class="form-control required" id="inputPassword1" placeholder="@Messages("authentication.password")" type="password" name="password" maxlength=10 minlength=5> 
</div> 
<div class="form-group"> 
    <label for="pass2">@Messages("authentication.password2")</label> 
    <input class="form-control required" data-rule-equalTo="#inputPassword1" id="inputPassword2" placeholder="@Messages("authentication.password")" type="password" name="password2"> 
</div> 

2)希望它可以幫助別人:)。