0

jQuery UI を使用してカスタム日付ピッカーを作成しました: http://jsfiddle.net/u8fVj/

$("#input_custom_date").datepicker({
numberOfMonths: 2,
beforeShowDay: function(date) {
    //Get today's date
    var today = new Date();
    today.setHours(0,0,0,0);

    if (today.getDay() == 4 || today.getDay() == 5 || today.getDay() == 6) {
        //If today is Wednesday, Thursday, Friday don't allow Sunday to be selectable until the next week on Sunday.
        var disabledDate = new Date(today||new Date());
        disabledDate.setDate(disabledDate.getDate() + (0 - 1 - disabledDate.getDay() + 7) % 7 + 1);
        return [(date > today && date.getDay() == 0 && date.toString() != disabledDate.toString()), ''];
    }else if(today.getDay() == 0){
        //If today is Sunday, don't allow today to be selectable.
        var disabledDate = today;
        var curr_date = date.getDate();
        var curr_month = date.getMonth();
        var curr_year = date.getFullYear();
        var dDate = new Date(curr_year, curr_month, curr_date);
        return [(date > today && date.getDay() == 0 && dDate.toString() != disabledDate.toString()), ''];
    }else{
        //Everything is fine, allow all Sundays to be selectable
        var day = date.getDay();
        return [(date > today && day == 0), ''];
    }
}

});

現在、ユーザーは日曜日の日付のみを選択できるはずです。今日の日付が次の日曜日の前の水曜日、木曜日、または金曜日であるかどうかを確認する必要があります。そうである場合、日付ピッカーは次の日曜日を無効にする必要があります。同様に、今日の日付が日曜日の場合、日付ピッカーで今日を無効にする必要があります。

ただし、日曜日だけを選択できるようにするのではなく、月曜日と火曜日だけを選択できるように日付ピッカーを変更する必要があります。今日の日付が木曜日、金曜日、または土曜日の場合、次の月曜日と火曜日を無効にする必要があります。今日が月曜日の場合、今週の月曜日と火曜日の両方を無効にする必要があります。今日の日付が火曜日の場合、今日の日付のみを無効にする必要があります。

また、休日を無効にする特定の日付を投入できるようにする必要がありますが、これはハードコードされている可能性があります。

私が今持っているものを超える方法がわからないので、助けていただければ幸いです。私はこれを機能させようとしてきましたが、ロジックを機能させることができません。

4

1 に答える 1

1

.getDay() == 0基本的に、小切手をに移動する必要があります.getDay() == 1 || .getDay() == 2。1 と 2 は月曜日と火曜日です。同様の比較を行う必要がありますdisableDate

disabledDate.setDate(disabledDate.getDate() + (1 - 1 - disabledDate.getDay() + 7) % 7 + 1);

月曜日を取得するために (必要ではありませんが、わかりやすくするために 0 - 1変更されています) に変更されます。火曜日に収穫します。1 - 12 - 1

特別な日付の処理に関しては、これらを<ul hidden>DOM に保存して、最初にチェックを行うことができます。

beforeShowDay: function(date) {
    //Get today's date
    var today = new Date(), specialDate = false;
    today.setHours(0,0,0,0);

    $(".special-dates li").each(function () {
        if ($(this).text() == today.toString()) {
            specialDate = true;
            return false;
        }
    });
    if (specialDate) {
        return [true, ''];
    }

http://jsfiddle.net/ExplosionPIlls/u8fVj/1/

于 2013-03-15T00:20:37.360 に答える