Trouble with jQuery Form Validation

Posted by Sennheiser on Stack Overflow See other posts from Stack Overflow or by Sennheiser
Published on 2011-03-13T00:05:04Z Indexed on 2011/03/13 0:10 UTC
Read the original article Hit count: 132

Filed under:
|
|

I'm making a form that has the following validation rules: no fields are "required", but if you enter an email, it must be valid, and if you enter a password, it must be at least 6 characters and match the confirm password field value.

The form works flawlessly with no validation so I know it's not a PHP or HTML problem.

Here's the jQuery code handling the form:

$('#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() != "")
        {
            $ev = 1;
            $pv = 1;
            //validates an email if there is one, trips the valid variable flag
            if($("#chem").val() != "")
            {
                $("#profSet").validate({
                    rules: {
                        chem: {
                            email: true
                        },
                        chpw: {
                            required: false,
                            minlength: 6
                        },
                        chpw2: {
                            required: false,
                            minlength: 6,
                            equalTo: $("#chpw").val()
                        }
                    },
                    messages:{
                        chpw2: {
                            equalTo: "Passwords must be the same."
                        },
                        chpw: {
                            minlength: "Password must be at least 6 characters."
                        }
                    }
                });
                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
        }
    });        

The problem I'm having now is that the "passwords must be the same" error keeps getting triggered even if both fields are blank, or if they actually are the same. Therefore, the form cannot submit. Any help?

© Stack Overflow or respective owner

Related posts about jQuery

Related posts about validation