【フォームブリッジ】日付フィールドに制限をかけたい

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日後より前の日付は選択できません。';
                }
            },

// 以下略

 

これらを組み合わせてコードを記載してみてください。