根据从下拉列表中选择的选项禁用jquery日期选择器中的日期

根据从下拉列表中选择的选项禁用jquery日期选择器中的日期,jquery,jquery-ui-datepicker,Jquery,Jquery Ui Datepicker,我有两个日期选择器显示开始日期和结束日期。有一个带有选项的选择框: |daily| |weekly| |monthly| |yearly| 假设所选选项为每周,起始日期为2013-03-28 ie;星期四。然后我需要禁用日历中除enddate中的星期四之外的所有其他日期。同样,如果选择了月份,并且开始日期为2013-03-28,则我希望在enddate中禁用除每月28日以外的所有日期。我怎样才能做到这一点 脚本 $( "#startdate" ).datepicker({ s

我有两个日期选择器显示开始日期和结束日期。有一个带有选项的选择框:

|daily|
|weekly|
|monthly|
|yearly|
假设所选选项为每周,起始日期为2013-03-28 ie;星期四。然后我需要禁用日历中除enddate中的星期四之外的所有其他日期。同样,如果选择了月份,并且开始日期为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 );
                }
            });

您可以通过以下方式实现它:

$(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
    });
});
以下是现场演示: