我正在使用GREAT jquery插件fullcalendar。
这是我的问题。
当用户通过在日历上单击并拖动2或3个连续日期来选择日期范围时。例如,从任何给定月份的第3天到第5天。
select:function(start,end,allDay)事件将以该月的第3个开始日期和该月的第5个结束日期触发。
我想要做的是为每个日期插入一个单独的事件。所以我不想插入持续3天的1个长事件......我想为那些日子插入个别事件。
以下是我使用的代码:
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日创建。第五届将有3场比赛。当我在我的代码中放置休息时,我实际上可以看到在正确的日期创建的事件,但是当它进入下一个日期(从第3个到第4个)时,最后插入的日期(本月的第3个)会被碰撞也到了第4个。
如果我一次只选择一个日期,那么代码就会发生同样的事情。
说我选择1月3日。该活动将于1月3日创建。但是,如果我在1月15日点击,那个事件将在15日创建,那么3日最后一个创建的事件将被发送到1月4日。
然后,如果我点击并选择1月6日,事件将在6日正确创建,但最后一个事件,第15个事件将被撞到第16个...... 请帮忙
答案 0 :(得分:0)
我认为你的问题是一个简单的javascript问题:因为日期是对象并在Javascript中通过引用传递,所有事件都指向变量'start'指向的日期,所以当你通过变量'start',它会改变所有这些。解决方法是在分配日期之前克隆日期:
...
title: title,
start: new Date(start.getTime()),
allDay: allDay,
...
我自己没有测试过,但我很确定它会起作用。