77

我正在尝试使用 jQuery 验证插件来确认我的密码输入。

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

如果用户想要更改密码,他们需要确认它。

如果不是,则不应验证这两个字段。

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

这是完美的工作,但同样,这两个字段都是必需的。

我想有这个可选的,以防有人只想更改他们的电子邮件或用户名,而不要管密码。

4

6 回答 6

161

删除 required: true规则。

演示:小提琴

jQuery('.validatedForm').validate({
            rules : {
                password : {
                    minlength : 5
                },
                password_confirm : {
                    minlength : 5,
                    equalTo : "#password"
                }
            }
于 2013-02-05T09:04:57.303 回答
36

在这里只是一个快速的提示,希望能帮助其他人......尤其是新版本(因为这是 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-*属性。

于 2015-08-10T17:20:53.263 回答
8

如果 id 值和 name 值不同,它会起作用:

<input type="password" class="form-control"name="password" id="mainpassword">
password: {     required: true,     } , 
cpassword: {required: true, equalTo: '#mainpassword' },
于 2015-09-24T07:12:21.683 回答
7
jQuery('.validatedForm').validate({
        rules : {
            password : {
                minlength : 5
            },
            password_confirm : {
                minlength : 5,
                equalTo : '[name="password"]'
            }
        }

一般来说,你不会这样使用id="password"。所以,你可以使用[name="password"]而不是"#password"

于 2016-05-11T14:36:10.613 回答
3

我在 Play Framework 中实现它,对我来说它是这样工作的:

1) 请注意,我在 id inputPassword1 的输入标签中使用了 data-rule-equalTo。我的模态中用户窗体的代码部分:

<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)因为我在模态中使用了验证器

$(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
       });

   });

希望它可以帮助某人:)。

于 2016-10-26T07:12:39.713 回答
1
<script>
   
     $(document).ready(function(){            
   
     });

     function login() {
        
         var password = $("#psw").val()
         var password1 = $("#psw1").val()
         var pswlen = password.length;
         if (pswlen < 8) {
             alert('minmum  8 characters needed')
         }
         else {

            if (password == password1) {
                 alert('continue');
                 window.location.replace("http://stackoverflow.com");
             }
             else {
                 alert('failed');
             }

         }

     }
    
</script>
于 2021-03-20T06:54:49.663 回答