對於我的示例的目的,這是基本的起始代碼:
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/
文檔:
如果你發現我的答案有幫助,請點擊複選標記接受它。 – Sparky 2012-02-24 17:16:36