おそらく10個のフィールドを持つフォームがあります。これらのフィールドの 1 つはチェックボックスであり、デフォルトではチェックされていません。フォームのいくつかのフィールドは、そのボックスがチェックされている場合にのみ有効で必須です。ValidatorEnable(requiredFieldValidator, true) を呼び出してこれを処理する方法を見つけることに成功しました (この件に関する多数の StackOverflow の質問を確認しました)。
function toggleStatus() {
if ($('#ctl00_main_chkContactMe').is(':checked')) {
$('#elementsToOperateOn :input').removeAttr('disabled');
$('#elementsToOperateOn label').removeClass('off');
ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], true);
ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], true);
} else {
$('#elementsToOperateOn :input').attr('disabled', true);
$('#elementsToOperateOn label').addClass('off');
ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], false);
ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], false);
}
}
ただし、まだ対処されていない問題があります。ユーザーがボックスをチェックして、フィールドが有効になり必須になると、バリデーターはすぐに「このフィールドは必須です」というメッセージを発します。これは、ユーザーが何かを入力する前の状態であるため、ユーザー エクスペリエンスはあまり良くありません。バリデーターを有効にしているにもかかわらず、「このフィールドにはまだフォーカスがありません。誰かが意図的に空のままにしておくまでエラーメッセージを表示しないでください」と認識させるにはどうすればよいですか?