0

我正在尝试做一些事情,当我点击一个事件时,它会在日历上放置一个新事件。此新事件持续 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] 当我在最初点击的同一个事件的范围内拖动一个新事件时,一切正常并按预期工作。

* 编辑 *

在句子 [1] 中,我的意思是:当我使用 select 方法通过拖动将新事件添加到日历中时,并且该新事件在最初单击的事件的时间跨度内被拖动时,一切正常并且正如预期的那样。

4

1 回答 1

1

没有 Date.js 专家,但在这里:

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

假设startDate是一个普通的 Date 对象,在我看来endDatestartDate将引用相同的日期对象,并且您只是将 1 小时添加到该对象。您可能需要:

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

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

以上不使用 Date.js。

于 2013-05-30T02:35:03.613 回答