jQuery验证插件-防止重复错误消息
我有一条规定,在每个阶段,选择的总数量必须等于预订的乘客数量。每个阶段在DIV中定义,如本例所示:- HTMLjQuery验证插件-防止重复错误消息,jquery,validation,jquery-validate,Jquery,Validation,Jquery Validate,我有一条规定,在每个阶段,选择的总数量必须等于预订的乘客数量。每个阶段在DIV中定义,如本例所示:- 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">...&
<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>
问题
我有以下问题:-
我自己想出来的。我需要对验证器上的控件进行分组。一旦这样做了,我就能够在一个单独的容器中显示每个阶段的错误。组和规则是动态创建的,如下所示
var validation =
{
errorContainer: "#ValidationSummary",
errorLabelContainer: "#ValidationSummary",
groups: {}, rules: {}, messages: {}
};
jQuery('div[id*="Stage_"]').each(function (i) {
jQuery('#' + jQuery(this).attr('id') + ' select[id*="Quantity_"]').each(function (j) {
var name = jQuery(this).attr('name');
var Rule = name;
validation.rules[Rule] = { validate_stages: [i + 1] };
});
});
jQuery('div[id*="Stage_"]').each(function (i) {
var group_ctrls = ''
jQuery('#' + jQuery(this).attr('id') + ' select[id*="Quantity_"]').each(function (j) {
var name = jQuery(this).attr('name');
group_ctrls = group_ctrls + name + ' ';
});
validation.groups['group_' + i] = group_ctrls;
});
jQuery('form:first').validate(validation);
我已经了解了如何动态创建规则,我现在需要了解如何只显示一次错误消息。
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;
}
var validation =
{
errorContainer: "#ValidationSummary",
errorLabelContainer: "#ValidationSummary",
groups: {}, rules: {}, messages: {}
};
jQuery('div[id*="Stage_"]').each(function (i) {
jQuery('#' + jQuery(this).attr('id') + ' select[id*="Quantity_"]').each(function (j) {
var name = jQuery(this).attr('name');
var Rule = name;
validation.rules[Rule] = { validate_stages: [i + 1] };
});
});
jQuery('div[id*="Stage_"]').each(function (i) {
var group_ctrls = ''
jQuery('#' + jQuery(this).attr('id') + ' select[id*="Quantity_"]').each(function (j) {
var name = jQuery(this).attr('name');
group_ctrls = group_ctrls + name + ' ';
});
validation.groups['group_' + i] = group_ctrls;
});
jQuery('form:first').validate(validation);