Для моего примера это базовый начальный код:
HTML:
<input type="text" name="field_1" />
<input type="text" name="field_2" />
<input type="text" name="field_3" />
JQuery:
$('#myForm').validate({
rules: {
field_1: {
required: true,
number: true
},
field_2: {
required: true,
number: true
},
field_3: {
required: true,
number: true
}
}
});
http://jsfiddle.net/9W3F7
Вариант 1a) Вы можете извлечь группы правил и объединить их в общие переменные.
var ruleSet1 = {
required: true,
number: true
};
$('#myForm').validate({
rules: {
field_1: ruleSet1,
field_2: ruleSet1,
field_3: ruleSet1
}
});
http://jsfiddle.net/9W3F7/1
Вариант 1b) Относится к пункту 1a выше, но в зависимости от вашего уровня сложности может выделить правила, общие для определенных групп, и использовать .extend()
для их рекомбинации в бесконечное множество способов.
var ruleSet_default = {
required: true,
number: true
};
var ruleSet1 = {
max: 99
};
$.extend(ruleSet1, ruleSet_default); // combines defaults into set 1
var ruleSet2 = {
min: 3
};
$.extend(ruleSet2, ruleSet_default); // combines defaults into set 2
$('#myForm').validate({
rules: {
field_1: ruleSet2,
field_2: ruleSet_default,
field_3: ruleSet1
}
});
Конечный результат:
field_1
будет обязательным числом не менее 3.
field_2
будет просто необходимым числом.
field_3
будет обязательным числом, не превышающим 99.
http://jsfiddle.net/9W3F7/2
Вариант 2a) Вы можете назначать классы своим полям на основе желаемых общих правил, а затем назначать эти правила классам. Используя метод addClassRules
, мы берем составные правила и превращаем их в имя класса.
HTML:
<input type="text" name="field_1" class="num" />
<input type="text" name="field_2" class="num" />
<input type="text" name="field_3" class="num" />
JQuery:
$('#myform').validate({ // initialize the plugin
// other options
});
$.validator.addClassRules({
num: {
required: true,
number: true
}
});
http://jsfiddle.net/9W3F7/4/
Опция 2b) Основное отличие от варианта 2a состоит в том, что вы можете использовать это для назначения правил динамически создаваемым элементам ввода, вызывая метод rules('add')
сразу после их создания. Вы могли бы использовать class
в качестве селектора, но это не обязательно. Как вы можете видеть ниже, мы использовали селектор подстановочного знака вместо class
.
Метод .rules()
должен вызываться в любое время после вызова .validate()
.
JQuery:
$('#myForm').validate({
// your other plugin options
});
$('[name*="field"]').each(function() {
$(this).rules('add', {
required: true,
number: true
});
});
http://jsfiddle.net/9W3F7/5/
Документация: