我正在使用GREAT jquery插件fullcalendar。
这是我的问题。
当用户通过单击并拖动日历上的2个或3个连续日期来选择日期范围时。例如,从任何一个月的3号到5号。
select:function(开始、结束、allDay)事件以当月3日的开始日期和当月5日的结束日期触发。
我想做的是为每个日期插入一个单独的事件。所以我不想插入一个持续3天的长事件。。。我想为每一天插入单独的事件。
这是我使用的代码:
select: function (start, end, allDay) {
var title = 'test';// prompt('Event Title:');
while (start.valueOf() < end.valueOf() + 86400000) {
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
allDay: allDay
},
true // make the event "stick"
);
start.setTime(start.valueOf() + 86400000);
}
calendar.fullCalendar('unselect');
},
但每次插入新事件时,它都会将最后插入的事件上移1天。所以最后,我正在创建的所有3个事件都将在5日创建。5日将举行3场比赛。当我在代码中插入break时,我实际上可以看到在正确的日期创建的事件,但当它转到下一个日期(从3日到4日)时,最后插入的日期(当月3日)也会被推到4日。
如果我一次只选择一个日期,那么代码也会发生同样的情况。
假设我选择1月3日。该活动将于1月3日创建。但如果我在1月15日点击,该事件将在15日创建,然后最后一个在3日创建的事件将被推迟到1月4日。
然后,如果我点击并选择1月6日,事件将在6日正确创建,但最后一个事件,即15日将被推到16日。。。请帮助
我认为你的问题是一个简单的javascript问题:也就是说,因为日期是对象,在javascript中是通过引用传递的,所以你的所有事件都指向变量"start"所指向的日期,所以当你通过变量"start'"更改该日期时,所有事件都会更改。修复方法是在分配日期之前克隆日期,如下所示:
...
title: title,
start: new Date(start.getTime()),
allDay: allDay,
...
我自己还没有测试过,但我很确定它会起作用。