views:

40

answers:

1

I have a form where I am calling the valid() function on each form element separately. I have an field named "altemailaddress" that I set a rule to be "email" and required is false. However the valid() function returns false if there is no value in the input text box.

jQuery("#aspnet-form").validate({
    onsubmit: false,
    rules: {
        prefix: "required",
        emailaddress: {
            required: true,
            email: true
        },
        altemailaddress: {
            required: false,
            email: true
        }

    },
    messages: {
        prefix: "Please enter a prefix",
        emailaddress: {
            required: "Please enter an email address",
            email: "Invalid email format"
        }

    }
});

var $group = jQuery(this).parents(".validationGroup");
    var isValid = true;


    $group.find(":input").each(function (i, item) {
        if (!jQuery(item).valid())
        {

            isValid = false;
        }           

    });

As I loop through each item, I call the valid() function. If the rule for altemailaddress says require: false, it ignores it and returns false if no value is provided.

If I just set up the validate plugin to validate on submit it works fine.

A: 

I think valid() is only for an enitre form

Try using $.validate().element(item)

if (!$("#aspnet-form").validate().element( item ))
{
  isValid = false;
}  

http://docs.jquery.com/Plugins/Validation/Validator/element#element

mr.moses
This worked at first, then without changing any code, I tested again and now it doesn't work. I will have to try again
David Burton
make sure you are still using jQuery 1.3I had some sites start failing yesterday because they automatically started using jQuery 1.4, and some of the plugins didnt work
mr.moses