Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完整日历重复事件_Javascript_Fullcalendar_Recurring Events - Fatal编程技术网

Javascript 完整日历重复事件

Javascript 完整日历重复事件,javascript,fullcalendar,recurring-events,Javascript,Fullcalendar,Recurring Events,我正在使用fullcalendar,希望从8月到11月每月(周一)重复一次活动。我已经能够重复这项活动,但这项活动在一个月内的每个星期一重复四次,而我需要在开始日期后的第一个星期一重复一次。以下日期范围随道琼斯指数(周天数)参数一起传递 var repeatingEvents = [{ title:"My repeating event", id: 1, start: '10:00', end: '14:00', dow: [ 1, 4 ], ranges: [{ //repeating

我正在使用fullcalendar,希望从8月到11月每月(周一)重复一次活动。我已经能够重复这项活动,但这项活动在一个月内的每个星期一重复四次,而我需要在开始日期后的第一个星期一重复一次。以下日期范围随道琼斯指数(周天数)参数一起传递

 var repeatingEvents = [{
title:"My repeating event",
id: 1,
start: '10:00', 
end: '14:00', 
dow: [ 1, 4 ], 
ranges: [{ //repeating events are only displayed if they are within at least one of the following ranges.
    start: moment().startOf('week'), //next two weeks
    end: moment().endOf('week').add(7,'d'),
},{
    start: moment('2015-02-01','YYYY-MM-DD'), //all of february
    end: moment('2015-02-01','YYYY-MM-DD').endOf('month'),
},/*...other ranges*/],
},/*...other repeating events*/];

我有没有办法每月重复一次,从开始日期到结束日期运行?任何帮助都将不胜感激

不幸的是,这种事情没有内置的支持。如果要使用如图所示的“ranges”数组,这是一个完全自定义的属性,因此需要一些自定义代码来处理它们。您似乎使用了与此答案相同的结构:。在这种情况下,您还需要该答案中显示的“eventRender”回调中的自定义代码,以便应用范围定义


另一个解决方案是简单地更改服务器端代码,以便它为fullCalendar请求的日期范围内所需的事件的每次重复生成一个单独的事件对象,并将其转换为JSON。

如果您不能按照@ADyson的建议在服务器端生成事件,您可以使用Javascript来完成。这将查找指定开始日期和结束日期之间的每月第一个星期一

var id=0, event, events = [],
    start=moment('2017-08-01'),
    end=moment('2017-10-31');

while (start.isBefore(end)) {
    id++;
    if (start.day() === 'Monday') {
        day = start.format('YYYY-MM-DD');
    } else {
        day = start.add(1, 'weeks').startOf('isoWeek').format('YYYY-MM-DD');
    }
    event = {
        title:"My repeating event",
        id: id,
        start: day + ' 10:00:00', 
        end: day + ' 14:00:00', 
    }
    events.push(event);
    start.add(1, 'month').startOf('month');
}
然后在日历中使用构建的事件数组:

$('#calendar').fullCalendar({
    events: events,
    // ...