Ответ 1
Для моего примера это базовый стартовый код:
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
}
}
});
Вариант 1a) Вы можете вывести группы правил и объединить их в общие переменные.
var ruleSet1 = {
required: true,
number: true
};
$('#myForm').validate({
rules: {
field_1: ruleSet1,
field_2: ruleSet1,
field_3: ruleSet1
}
});
Вариант 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.
Вариант 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
}
});
Вариант 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
});
});
Документация: