NKIさん
こんにちは。
①含めて順に回答します。
【エラー判定】
// フォーム入力日
var min_date = new Date();
var min_date_format = min_date.getFullYear() + "-" + ("00" + (min_date.getMonth() + 1)).slice(-2) + "-" + ("00" + min_date.getDate()).slice(-2);
①土日と指定日付(年末年始など)は選択不可
// 土日選択不可
if (value.getDay() == '0' || value.getDay() == '6' || /^(?!(2022-01-01|....日付を列挙))/i.test(result) == false) {
flag = 1;
return false;
}
②フォームを入力している日付より前は選択不可
// 当日より前は不可
if (result < min_date_format) {
flag = 2;
return false;
}
③フォームを入力している日付から平日の3日間をあけた日付から選択可能
// フォーム入力日の3日後
var date_after3 = new Date(min_date.setDate(min_date.getDate() + 3));
var date_after3_format = date_after3.getFullYear() + "-" + ("00" + (date_after3.getMonth() + 1)).slice(-2) + "-" + ("00" + date_after3.getDate()).slice(-2);
// 3日後より前は不可
if (result < date_after3_format) {
flag = 3;
return false;
}
④上記に該当しない場合(エラーなし)
validateのfunctionの末尾に記載が必要です。
return true;
【エラーメッセージ表示】
エラーメッセージを変えるためにflagで判断します。
fb.addValidators = function(state) {
var flag = 0;
return {
custom_validation1: {
getMessage: function(fieldCode, params) {
switch (flag) {
case 1:
return '土日祝日、年末年始は選択できません。';
case 2:
return 'フォーム入力日より前の日付は選択できません。';
case 3:
return 'フォーム入力日の3日後より前の日付は選択できません。';
}
},
// 以下略
これらを組み合わせてコードを記載してみてください。