我试图做一些事情,当我点击一个事件,它在日历上放置一个新的事件。这个新事件的时间跨度为1小时,并且与被单击的事件具有相同的开始日期:
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]当我拖动一个新的事件在相同的原点击事件的跨度,一切工作正常,如预期的
* EDIT *
在句子[1]中,我的意思是:当我使用select方法通过拖动将新事件添加到日历中时,并且新事件在最初单击的事件的时间跨度内被拖动,一切工作正常,如预期。
我不是Date.js的专家,但是这里:
var endDate = startDate.addHours(1) // using the Datejs library
假设startDate是一个普通的Date对象,在我看来,endDate和startDate将引用相同的日期对象,并且您只是向该对象添加1小时。您可能需要:
// Create a duplicate of startDate
var endDate = new Date(+startDate);
// Increment it by 1 hour
endDate.setHours(endDate.getHours() + 1);
上面没有使用Date.js