一連の質問をページに表示するページを作成しています。これらの質問の一部には複数のオプションがあり、ユーザーがテキスト ボックスに何かを入力する必要があるだけの場合もあります。
これらの質問の性質と、それらを検証する必要がある方法 (質問全体を調べる必要があります) のため、すぐに使用できる必須フィールド バリデーターではうまくいかないという結論に達しました。
それで私は自分で書き始め、少しハードルにぶつかりました...
私の検証メソッドでは、バリデーターの条件に基づいて発生する可能性のある 2 つの「エラー メッセージ」を渡します。
このコンテキストでそれらを適切な場所に配置するにはどうすればよいですか? 検証ハンドラー関数で失敗した状態になるまで、実際のエラーメッセージがどうあるべきかわからないことに基づいて、jqueryに「これをエラーメッセージとして設定し、このフィールドを失敗させる」と言うことができる必要があります。
$.validator.unobtrusive.adapters.add("myrule", ['enable', 'err1', 'err2'], function (options) {
var value = {
enable: options.params.enable,
err1: options.params.err1,
err2: options.params.err2
};
options.rules["myrule"] = value;
if (options.message) {
options.messages["myrule"] = options.message;
}
});
$.validator.addMethod("myrule", function (value, element, params) {
var question = $(element).closest('fieldset[data-questionId]');
var result = validateMyrule(question, params['enable'], params['err1'], params['err2']);
return result;
});
function validateMyrule(question, enabled, err1, err2)
{
// actual code omitted to simplify question
if(someCondition)
{
if(someCondition)
{
errorMessage = err1;
}
else
{
errorMessage = err2;
}
return false;
}
return true;
}