取自my previous answer:
就我的示例而言,这是基本的起始代码:
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/rq5ra/
选项 1a) 您可以根据所需的通用规则将类分配给您的字段,然后将这些规则分配给类。您还可以分配自定义消息。
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" />
.rules('add') method必须在调用.validate() 之后调用,.each() 必须用于定位所有带有class 的元素。
jQuery:
$('#myForm').validate({
// your other plugin options
});
$('.num').each(function() {
$(this).rules('add', {
required: true,
number: true,
messages: {
required: "your custom message",
number: "your custom message"
}
});
});
演示:http://jsfiddle.net/rq5ra/1/
选项 1b) 同上,但不使用class,而是匹配名称属性的公共部分:
$('[name*="field"]').each(function() {
$(this).rules('add', {
required: true,
number: true,
messages: { // optional custom messages
required: "your custom message",
number: "your custom message"
}
});
});
演示:http://jsfiddle.net/rq5ra/6/
选项 2a) 您可以提取规则组并将它们组合成公共变量。
var ruleSet1 = {
required: true,
number: true
};
$('#myForm').validate({
rules: {
field_1: ruleSet1,
field_2: ruleSet1,
field_3: ruleSet1
}
});
演示:http://jsfiddle.net/rq5ra/4/
选项 2b) 与上述 2a 相关,但取决于您的复杂程度,可以分离出某些组共有的规则,并使用.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
var ruleSet3 = { };
$.extend(ruleSet3, ruleSet1, ruleSet2); // combines sets 2 & 1 into set 3. Defaults are included since they were already combined into sets 1 & 2 previously.
$('#myForm').validate({
rules: {
field_1: ruleSet2,
field_2: ruleSet_default,
field_3: ruleSet1,
field_4: ruleSet3
}
});
最终结果:
-
field_1 是一个不小于 3 的必填数字。
-
field_2 只是一个必填数字。
-
field_3 是不大于 99 的必填数字。
-
field_4 是 3 到 99 之间的必填数字。
演示:http://jsfiddle.net/rq5ra/5/