我正在努力做点什么,当我点击一个事件时,它会在日历上放置一个新事件。此新活动的时间跨度为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)
}
以上功能正常。事件将在预期位置呈现。问题是当我尝试修改新事件的开始日期时。
问题是:最初点击的事件的开始日期始终跟随新事件的开始日期。我一直在撞墙,试图修复它无济于事。
当我向上拖动事件时,最初点击的事件的开始日期随之移动(原始点击的事件也将editable设置为false),并不意味着这样做。当拖动新事件以使其开始日期超过所点击事件的结束日期时,所单击的事件会尝试呈现事件,使得开始日期在结束日期之后。
这都是因为点击事件的开始日期由于某种原因与新事件的开始日期相关联。
[1]当我在同一个最初点击的事件的范围内拖动一个新事件时,一切正常并且符合预期。
*编辑*
在句子[1]中,我的意思是:当我使用select方法通过拖动将新事件添加到日历中,并且在最初点击的事件的时间范围内拖动新事件时,一切工作正常并且符合预期。
答案 0 :(得分:1)
没有关于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。