以编程方式在Fullcalendar中选择一段时间

时间:2013-08-01 03:31:19

标签: javascript jquery asp.net fullcalendar

我在asp.net应用程序中使用Fullcalendar

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

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

我怎样才能做到这一点?

到目前为止我尝试了什么:

这是Demo

1 个答案:

答案 0 :(得分: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/