2013-02-05 110 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)希望它可以帮助别人:)。