jQuery - How to dynamically add a validation rule
You need to call .validate()
before you can add rules this way, like this:
$("#myForm").validate(); //sets up the validator
$("input[id*=Hours]").rules("add", "required");
The .validate()
documentation is a good guide, here's the blurb about .rules("add", option)
:
Adds the specified rules and returns all rules for the first matched element. Requires that the parent form is validated, that is,
$("form").validate()
is called first.
The documentation says:
Adds the specified rules and returns all rules for the first matched element. Requires that the parent form is validated, that is,
> $("form").validate() is called first.
Did you do that? The error message kind of indicates that you didn't.
As well as making sure that you have first called $("#myForm").validate();
, make sure that your dynamic control has been added to the DOM before adding the validation rules.
To validate all dynamically generated elements could add a special class to each of these elements and use each() function, something like
$("#DivIdContainer .classToValidate").each(function () {
$(this).rules('add', {
required: true
});
});