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;
});
3 つの方法に帰着するように思われる動的エラー メッセージについて広範囲に Google で検索しましたが、これらのいずれもオプションのエラー メッセージを表示できません。これらは:
エラーメッセージを返す
// 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
関数から追加のパラメーターを返す
これらのどれも機能しませんでしたが、2 番目のメッセージをステップ実行すると、オプションのメッセージが短時間表示されてから上書きされました。
明らかな何かが明らかに欠けていますが、それが何であるかはわかりません。
前もって感謝します。