0
我有一個規則,說每個階段的總數量選擇必須等於預訂乘客的人數。每個階段在DIV定義像在這個例子中: -jQuery驗證插件 - 防止重複錯誤消息
HTML
<div id="Stage_1">
<select data-stage="1" id="Quantity1" name="Items[1].Quantity">...</select>
<select data-stage="1" id="Quantity2" name="Items[2].Quantity">...</select>
<select data-stage="1" id="Quantity3" name="Items[3].Quantity">...</select>
</div>
<div id="Stage_2">
<select data-stage="2" id="Quantity4" name="Items[4].Quantity">...</select>
<select data-stage="2" id="Quantity5" name="Items[5].Quantity">...</select>
</div>
因此,例如,如果我有上述樣品中的4名乘客預訂量1-3的總和值必須等於4並且還量的總和值4-5也必須等於4。
我然後使用jQuery驗證插件來驗證...
腳本
個function ValidateStages(value, element, options) {
var stage = options[0];
var valid = true;
var arrVS = new Array(0);
jQuery('div[id*="Stage_' + stage + '"] select[id*="Quantity"]').each(function() {
var e = jQuery(this);
if (arrVS[e.attr('data-stage')] == undefined) {
arrVS[e.attr('data-stage')] = 0;
}
arrVS[e.attr('data-stage')] += parseInt(e.val());
});
for (key in arrVS) {
if(arrVS[key] != MaxPassengers) {
valid = false;
}
}
return valid;
}
jQuery(document).ready(function() {
jQuery.validator.addMethod("validate_stages", ValidateStages, "Stage {0} error ");
jQuery('form:first').validate({
errorContainer: "#ValidationSummary",
errorLabelContainer: "#ValidationSummary",
rules: {
"Items[1].Quantity": { validate_stages: [1] } ,
"Items[2].Quantity": { validate_stages: [1] } ,
"Items[3].Quantity": { validate_stages: [1] } ,
"Items[4].Quantity": { validate_stages: [2] } ,
"Items[5].Quantity": { validate_stages: [2] }
},
});
});
問題
我有以下問題: - 將顯示在頁面上每個下拉
錯誤消息。例如,如果說「階段1錯誤階段1錯誤階段1錯誤階段2錯誤階段2錯誤」。如果階段1和階段2無效,則應該只顯示「階段1錯誤階段2錯誤」
正如您所見,規則是硬編碼的。我確實嘗試創建一個函數(見下文),它可以即時創建規則,但我不知道如何應用它。如果我嘗試做規則:{GetRules()}然後我就得到一個錯誤說 「預計:」
var GetRules = function() { var rules = ''; jQuery('div[id*="Stage_"]').each(function (i) { jQuery('#' + jQuery(this).attr('id') + ' select[id*="Quantity_"]').each(function (j) { var name = jQuery(this).attr('name'); rules = rules + '"' + name + '": { validate_stages: [' + (i + 1) + '] }, '; }); }); if (rules.length > 2) { rules = rules.slice(0, -2); } return rules; }
我已經想出瞭如何動態創建規則,我現在只需要瞭解如何只顯示錯誤消息一次。 – 2012-07-20 14:44:40
想象一下,見下文。 – 2012-07-20 15:10:27