我正在使用带有 MVC 3 和不显眼验证的 VS 2010。我正在尝试创建一个自定义范围验证器,以包括输入值可接受但意外的警告。ignore
(我具有通过使用表单验证器的选项来提交带有衰减的值的工作功能)
不显眼的组件是:
// The adapter to support ASP.NET MVC unobtrusive validation //
$.validator.unobtrusive.adapters.add('rangewithwarning', ['min', 'max', 'wmin', 'wmax', 'warning'],
function (options) {
options.rules['rangewithwarning'] = {
min: options.params.min,
max: options.params.max,
wmin: options.params.wmin,
wmax: options.params.wmax,
warning: options.params.warning
};
options.messages['rangewithwarning'] = options.message;
});
我对动态错误消息进行了广泛的搜索,这似乎归结为三种方法,但这些方法都不允许我显示可选的错误消息。这些都是:
返回错误信息
// The validator function $.validator.addMethod('rangewithwarning', function (value, element, params) { if (!value) { return true; // not testing 'is required' here! } var intValue = parseInt(value); // set logic here if (intValue >= params.wmin && intValue <= params.wmax) { // OK within both actual and range warning return true; } if (params.min <= intValue && intValue <= params.max) { // outside warning but within allowed range - show warning return params.warning; } return $.validator.messages.rangewithwarning;
});
使用 showErrors
// The validator function $.validator.addMethod('rangewithwarning', function (value, element, params) { if (!value) { return true; // not testing 'is required' here! } var validator = this; var intValue = parseInt(value); // set logic here if (intValue >= params.wmin && intValue <= params.wmax) { // OK within both actual and range warning return true; } if (params.min <= intValue && intValue <= params.max) { // outside warning but within allowed range - show warning var errors = new Object(); errors[element.name] = params.warning; validator.showErrors(errors); } return false; });
messager
从函数返回一个附加参数
这些都不起作用,尽管在逐步执行第二个时,可选消息被短暂显示然后被覆盖。
我显然遗漏了一些明显的东西,但看不到它是什么。
提前致谢。