从选定的日期范围插入单个新事件的问题

时间:2012-02-03 20:05:36

标签: jquery fullcalendar

我正在使用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个...... 请帮忙

1 个答案:

答案 0 :(得分:0)

我认为你的问题是一个简单的javascript问题:因为日期是对象并在Javascript中通过引用传递,所有事件都指向变量'start'指向的日期,所以当你通过变量'start',它会改变所有这些。解决方法是在分配日期之前克隆日期:

...
title: title,
start: new Date(start.getTime()),
allDay: allDay,
...

我自己没有测试过,但我很确定它会起作用。