Чтобы объявить правила внутри .validate()
, вы должны должны использовать атрибут name
. Обходным путем является использование метода rules('add')
, который позволит вам использовать любой селектор jQuery. (Тем не менее, несмотря на выбранный метод присвоения правил, каждое поле должно по-прежнему содержат уникальный name
атрибут.)
$('[myattr="foo"]').rules('add', {
required: true,
messages: {
required: "optional custom message"
}
});
См: http://docs.jquery.com/Plugins/Validation/rules#.22add.22rules
Примечания:
Марка конечно, вы используете последнюю версию плагина, которая только недавно исправила ошибку, в которой используется messages
внутри rules('add')
нарушил правило.
Если селектор что-то вроде class
, где вы хотите, чтобы выбрать более одного элемента, вы должны обернуть rules('add')
в JQuery .each()
.
$('.myclass').each(function() {
$(this).rules('add', {
required: true,
messages: {
required: "optional custom message"
}
});
});
Чтобы использовать пользовательскую функцию, как правило, вы просто создать свой метод/правила с помощью метода addMethod
, а затем объявить его как любое другое правило.
$.validator.addMethod('myrule', function(value, element, params) {
// your function
// return true to pass
// return false to fail
}, "error message");
$('#myform').validate({
rules: {
myfield: {
required: true,
myrule: true
}
}
});
См: http://docs.jquery.com/Plugins/Validation/Validator/addMethod#namemethodmessage
Ваша конкретная логика проверки легко может быть выражено в виде регулярных выражений –