就我的示例而言,这是基本的起始代码:
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/
文档: