2013-05-30 210 views
0

我正在尝试做某些事情,当我点击一个事件时,它会在日历上放置一个新事件。此新事件跨越1小时,并且与点击事件具有相同的开始日期:新事件的开始日期跟随点击事件的开始日期 - fullCalendar

eventClick: function(event) { 

    var startDate = event.start 
    var endDate = startDate.addHours(1) // using the Datejs library 

    var eventObject = { 
     id: SetGreatestId(), //function that tracks the currently greatest id, also returns that value +1. 
     title: "New Event", 
     editable: true, 
     start: startDate, 
     end: endDate, 
     color: "grey" 
    } 

    $(element).fullCalendar('renderEvent', eventObject, true) 
} 

上述功能正常工作。事件呈现在预期的位置。问题是当我尝试修改新事件的开始日期时。

问题是这样的:最初点击事件的开始日期总是跟在新事件的开始日期之后。我一直在撞墙,试图解决它无济于事。

当我向上拖动事件时,最初单击的事件的开始日期随之移动(最初单击的事件也可编辑设置为false),但并不意味着这样做。当拖动新事件以使其开始日期超过单击事件的结束日期时,单击的事件会尝试呈现事件,使得开始日期在结束日期之后出现奇怪现象。

这都是因为点击事件的开始日期是由于某种原因链接到新事件的开始日期。

[1]当我在同一个最初点击事件的范围内拖动一个新事件时,一切正常,并按预期。

*编辑*

在判决[1],我的意思是:当我使用的选择方法,通过拖动到一个新的事件添加到日历,以及新的事件被内拖动最初点击事件的时间跨度,一切工作正常,并按预期。

+0

[添加一个click事件fullcalendar]的可能重复(http://stackoverflow.com/questions/2524971/adding-a-click-event-to-fullcalendar) – user2205763

回答

1

上Date.js方面的专家,但在这里:

var endDate = startDate.addHours(1) // using the Datejs library 

假设的startDate是一个普通的Date对象,这在我看来,结束日期的startDate将引用同一个日期对象,而且你只需要为该对象添加1小时。您可能需要:

// Create a duplicate of startDate 
var endDate = new Date(+startDate); 

// Increment it by 1 hour 
endDate.setHours(endDate.getHours() + 1); 

以上不使用Date.js。

+0

它没有工作:( 我也尝试删除原始点击事件,渲染新事件,然后重新渲染原始点击事件。新事件的开始日期仍然绑定到原始点击事件。 – user2205763

+0

RobG基本上解决了它! 我刚刚做了startDate一个新的日期以及: var startDate = new Date(event.start) RobG如果我有信誉投票你,我会。 – user2205763

相关问题