Плагин проверки jQuery + equalTo не работает - PullRequest
13 голосов
/ 22 мая 2010

Вот то, что я сейчас использую, чтобы попытаться проверить форму. Когда я нажимаю «Отправить» без введенных в форму значений, я получаю сообщения об ошибках для каждого из входов, как и ожидалось. Однако, что бы я ни указывал в newpassword2 или newemail2, они никогда не «проходят» проверку. Я перепробовал все, от копирования и вставки до создания по одной букве, но безуспешно. Возможно, я не правильно использую атрибут equalTo ...

Я также проверил, что все имена селекторов совпадают с идентификаторами ввода в форме. Кроме того, все входные данные содержатся в форме, поэтому за пределами тегов формы нет никаких (я читал, что это была проблема с кем-то еще).

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

Любая помощь будет чрезвычайно признательна!

СПАСИБО !!!

-Tom-

Ответы [ 5 ]

19 голосов
/ 02 августа 2011

Если вы будете использовать id = "пароль", он не будет работать. Вы должны использовать другое имя для идентификатора.

Все ключи в объекте правил относятся к input.name, а не input.id

10 голосов
/ 06 июля 2011

При использовании равных вам необходимо использовать имя формы и идентификатор. Например:

<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"
            }
        }
    });
3 голосов
/ 07 марта 2011

У меня была та же проблема, что и у Тома.Решением было создать идентификатор для полей пароля, который соответствовал бы именам для полей пароля.(Как упомянуто Томом).Определенно ошибка в коде проверки, потому что он должен полагаться только на поле имени.Ну да ладно ...

-Грэг

2 голосов
/ 11 мая 2016

Перед использованием «equalTo» нам нужно позаботиться о следующих пунктах:

  1. Используйте другое слово для ввода имени элемента и идентификатора.

  2. Использовать идентификатор элемента ввода в совпадении "equalTo" вместо имени элемента ввода:

<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>
		    <input type="submit"  id="btnSubmit" name="submit" value="Reset Password">
	       </div>
        </div>
       </div>
    </form>
       </div>
</body>
</html>
2 голосов
/ 22 мая 2010

@ Том попробуйте

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

или используйте последнюю версию плагина проверки

Теперь добавлены правила, для пароля требуется установить значение true, а второе условие для password_again установлено в значение requiredЗначение true и должно равняться полю ввода с идентификатором пароля.С этими условиями мы можем достичь того, чего хотим.Не забудьте проверить демо поста, чтобы увидеть, как он работает.Для получения дополнительной документации и ресурсов по этому плагину посетите плагин jQuery Validation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...