我创建了一个 MVC 4 验证属性,它将比较代表年份范围的 2 个字段,以验证结束年份不在开始年份之前。
我创建了以下 JS:
jQuery.validator.unobtrusive.adapters.add(
'yearrange', ['startyear', 'endyear'], function (options) {
options.rules['yearrange'] = options.params;
options.messages['yearrange'] = options.message;
}
);
jQuery.validator.addMethod(
'yearrange', function (value, element, params) {
var startYearElementName = params.startyear;
var endYearElementName = params.endyear;
var startYear = $('#' + startYearElementName).val();
var endYear = $('#' + endYearElementName).val();
if (startYear == '' || endYear == '') {
return true;
}
return (+startYear <= +endYear);
}, '');
我将验证属性应用于我的 ViewModel 中的两个属性:
[YearRange("StartYear", "EndYear", "yearRangeInvalid")]
public int StartYear { get; set; }
[YearRange("StartYear", "EndYear", "yearRangeInvalid")]
public int EndYear { get; set; }
我不想使用摘要验证消息。
当一个字段被更改时,我可以使用验证组来触发两个字段的重新验证吗?
并且可以在上面的 adapters.add 回调中配置吗?
我没有成功地尝试过类似的东西:
jQuery.validator.unobtrusive.adapters.add(
'yearrange', ['startyear', 'endyear'], function (options) {
options.rules['yearrange'] = options.params;
options.messages['yearrange'] = options.message;
jQuery.validator.groups[options.params.startyear] = "yearrange";
jQuery.validator.groups[options.params.endyear] = "yearrange";
}
);