0

我在我的应用程序中使用Fullcalendarasp.net

如果我们需要在Fullcalendar中选择一个月或一年,有一个方法 as select。我们可以传递startDateendDate那个方法并选择那个时间段。

我需要weekends在一个月内以编程方式选择。也需要week days在一个月内选择。

我怎样才能做到这一点?

到目前为止我已经尝试过:

这是演示

4

1 回答 1

0

所以我得到了你的答案(我需要一些非常相似的东西,在寻求帮助时偶然发现了这个)。我们需要在 FullCalendar 和 DOM 之外思考一分钟。FullCalendar 使用 MomentJS,这将派上用场(这未包含在您的示例中,您需要它用于以下内容)。首先,您需要创建一个周末或工作日数组。我在接下来的 365 天(下一个全年)都这样做了。

使用 MomentJS 的周末数组示例:

$('#weekends').click(function() {

    weekend_array = new Array();
    var cal = $('#calendar').fullCalendar('getCalendar'); 
    var curr_moment = moment(cal);


    for(k=0; k<365; k++) // for the next 365 days (next year)
    {
        // if weekend
        if(curr_moment.day()==0 || curr_moment.day()==6) // 0 being Sunday, 6 being Saturday
        {
            weekend_array.push(curr_moment.format("YYYY-MM-DD")); // format to match the data-date attr
        }

        curr_moment= curr_moment.add(1, 'days');

    }

    console.log("Number of weekend days: " + weekend_array.length);
    console.log(weekend_array);

    var dates = weekend_array
    HighlightDates(dates);

    // help DOM restore checked dates on click
    $('#daymode').val('weekend');

});

所以你有你明年的周末阵列。现在,我们需要突出显示日期。问题是,一旦您单击箭头查看下个月,选定的日期就会被清除(因为我们在 DOM 中工作)所以我在一个可以为工作日、周末或按钮调用的函数中创建了选择日期点击:

function HighlightDates(dates){
    $('.fc-day').each(function () {
            var thisdate = $(this).attr('data-date');
            var td = $(this).closest('td');

            if ($.inArray($(this).attr('data-date'), dates) !== -1) {
                td.addClass('fc-state-highlight');
            } else {
                td.removeClass('fc-state-highlight');
            }
        });
}

我希望这会有所帮助,一切的工作演示。:D http://jsfiddle.net/z8Jfx/255/

于 2014-10-29T14:24:26.760 回答