Проблема с проверкой формы jQuery - PullRequest
1 голос
/ 13 марта 2011

Я создаю форму, которая имеет следующие правила проверки: никакие поля не являются «обязательными», но если вы вводите электронное письмо, оно должно быть действительным, а если вы вводите пароль, оно должно содержать не менее 6 символов и соответствует значению поля подтверждения пароля.

Форма работает без нареканий, поэтому я знаю, что это не проблема PHP или HTML.

Вот код jQuery, обрабатывающий форму:

Обновленный код

$('#success').hide();
    $('#pwerror').hide();
    $('#emailError').hide();

    $('#subSet').live('click',function() {
        //if any of the fields have a value
        if($("#chfn").val() != "" || $("#chln").val() != "" || $("#chpw").val() != "" || $("#chpw2").val() != "" || $("#chem").val() != "" || $("#chDefZone").val() != "Select Zone")
        {
            $ev = 1;
            $pv = 1;
            $("#profSet").validate({
                rules: {
                    chem: {
                        email: true
                    },
                    chpw: {
                        minlength: 6
                    },
                    chpw2: {
                        minlength: 6,
                        equalTo: "#chpw"
                    }
                },
                messages:{
                    chpw2: {
                        equalTo: "Passwords must be the same."
                    },
                    chpw: {
                        minlength: "Password must be at least 6 characters."
                    }
                }
            });
            //validates an email if there is one, trips the valid variable flag
            if($("#chem").val() != "")
            {
                if(!($("#profSet").valid()))
                {
                    $ev = 0;
                }
            }
            //if either password field is filled, start trying to validate it
            if($("#chpw").val() != "" || $("#chpw2").val() != "")
            {
                if(!($("#profSet").valid()))
                {
                    $pv = 0;
                }
            }
            //if those two were valid
            if($pv == 1 && $ev == 1)
            {
                $.post('php/profSet.php', $('#profSet').serialize(), function(){
                    $('#profSet').hide();
                    $('#success').show();
                });
            }               
            //if either was invalid, the error was already tripped, and this code exits here
        }
    });

Теперь проблема в том, что один из флагов недействительности был отключен, но я не могу найти, где, форма должна вернуть действительный в моих тестах.

1 Ответ

3 голосов
/ 13 марта 2011

equalTo принимает селектор, а не значение.

Изменение ...

equalTo: $("#chpw").val()

... для ...

equalTo: "#chpw"

... и ты в порядке.

Обновление

Кстати, вам не нужно явно проверять, является ли электронное письмо (или любое другое поле) пустым, перед проверкой. Только не включайте required: true. Затем он должен проверять его только при наличии значения.

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