fullCalendar jQuery,每个星期一重复一次?

通常这是日历中的事件:

{ title: 'Test', start: '2012-06-08', end: '2012-06-08', url: 'test/test' }, 

工作良好。 虽然如何在日历中的每个星期一制作1个活动? 或者每个星期二等等取决于您输入的工作日/数字? 什么是param,如果有一个?

如果它不存在,我可以以某种方式修改并添加function来实现这一目标吗? 所以你可以输入一个像repeatEveryWeekDay:2(这是星期一)的参数,然后在所有未来的星期一,数据将显示在那里。

我试过查看http://arshaw.com/fullcalendar/docs/event_data/Event_Object/,但找不到任何东西。

fullCalendar允许传递一个函数,例如,从服务器下载事件,或动态生成这些事件,而不是传递事件数组。

文档中的大多数示例都使用HTTP请求来获取事件数据。 但回调函数仍然足够灵活,可以按照您的方式工作。

看看我刚刚为您编写的以下示例:

 $(document).ready(function() { var date = new Date(); var d = date.getDate(); var m = date.getMonth(); var y = date.getFullYear(); $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, editable: true, events: [ // some original fullCalendar examples { title: 'All Day Event', start: new Date(y, m, 1) }, { title: 'Long Event', start: new Date(y, m, d-5), end: new Date(y, m, d-2) }, { id: 999, title: 'Repeating Event', start: new Date(y, m, d-3, 16, 0), allDay: false } ] }); // adding a every monday and wednesday events: $('#calendar').fullCalendar( 'addEventSource', function(start, end, callback) { // When requested, dynamically generate virtual // events for every monday and wednesday. var events = []; for (loop = start.getTime(); loop <= end.getTime(); loop = loop + (24 * 60 * 60 * 1000)) { var test_date = new Date(loop); if (test_date.is().monday()) { // we're in Moday, create the event events.push({ title: 'I hate mondays - Garfield', start: test_date }); } if (test_date.is().wednesday()) { // we're in Wednesday, create the Wednesday event events.push({ title: 'It\'s the middle of the week!', start: test_date }); } } // for loop // return events generated callback( events ); } ); }); 

上述function会自动为两个日期之间的每个星期一和星期三生成一个事件。 日期以startend参数表示。 那些参数由fullCallendar传递。 上述函数生成的事件通过第三个参数中的callback函数返回到fullCallendar

我使用DateJS来测试给定日期是否为星期一。

更新 :如果要混合静态事件和/或[多个]可重复事件,可以使用addEventSource 。

克里斯托弗拉米雷斯的post略有更新。 使用v2.2.3中的fullCalendar和v2.8.4中的v2.8.4您需要修改上面代码段中的几行以使其工作:

第一:

 function(start, end, callback) {} 

 function(start, end, status, callback) {} 

因为第三个参数是布尔值,第四个是回调函数

然后:

 for (loop = start.getTime(); loop <= end.getTime(); ... 

 for (loop = start._d.getTime(); loop <= end._d.getTime(); 

因为传递给函数的开始和结束对象不是Date对象,并且对它们调用.getTime()将最终出现在'Undefined is not a function'错误中。

这就是它! 这些修正案对我有用。

它是事件对象的ID字段,用于确定该事件的可重复性。 对于一周中特定日期的所有重复事件,请使用相同的ID。

我发现解决重复事件的最好方法是设置对后端语言的JSON调用(我正在使用Django / Python)。

所以我会有日历选项:

事件:{url:’/ event-data’,cache:false},

然后在我的后端,我利用为当前显示的日历“开始”和“结束”URL GET变量发送的参数。 即:

hxxp://示例.com:8000 /事件数据开始= 2014年9月28日和结束= 2014-11-09&_ = 1413553318353?

将从事件选项发送Get请求,然后从数据库/源文件构建事件,该文件列出重复事件以及常规日历事件,并仅在JSON列表中发回该日期范围内发生的事件列表。