2

startdate と enddate を示す 2 つの日付ピッカーがあります。オプション付きの選択ボックスがあります。

|daily|
|weekly|
|monthly|
|yearly|

選択されたオプションが週次で、startdate で選択された日付が 2013-03-28 であるとします。木曜日。次に、終了日の木曜日以外のカレンダーの他のすべての日を無効にする必要があります。同様に、月が選択され、startdate が 2013-03-28 の場合、enddate で毎月 28 日以外のすべての日付を無効にしたいと考えています。どうすればこれを達成できますか。

脚本

 $( "#startdate" ).datepicker({
        showButtonPanel: true,
        dateFormat: 'yy-mm-dd',
        minDate: 0,
        changeYear: true,
        changeMonth: true,
        numberOfMonths: 1,
        onClose: function( selectedDate ) {
            $( "#enddate" ).datepicker( "option", "minDate", selectedDate );
        }
    });

 $( "#enddate" ).datepicker({
                showButtonPanel: true,
                dateFormat: 'yy-mm-dd',
                minDate: 0,
                changeYear: true,
                changeMonth: true,
                numberOfMonths: 1,
                onClose: function( selectedDate ) {
                    $( "#startdate" ).datepicker( "option", "maxDate", selectedDate );
                }
            });
4

1 に答える 1

1

次の方法で実装できます。

$(function() {
    var period = 'weekly';
    var filterDate = function(date) {
        var today = new Date();
        if (period == 'weekly') {
            if (today.getUTCDay() != date.getUTCDay()) {
                return [false, "", ""];                
            }
        } else if (period == 'monthly') {
            if (today.getDate() != date.getDate()) {
                return [false, "", ""];                
            }            
        }
        return [true,"",""];
    };

    $("#period").change(function() {
        period = $(this).val();
    });    
    ...
    $( "#enddate" ).datepicker({
        ...
        beforeShowDay: filterDate
    });
});

これがライブデモです: http://jsfiddle.net/netme/8GYsx/

于 2013-03-28T09:34:06.027 に答える