我有一个包含正常事件和 allDay 事件的完整日历。
我想禁止 allDay-events 被拖到议程视图中的正常事件中。
全天事件从一开始就设置了开始时间和结束时间,所以我无法检查结束时间是否为空。
也许 eventDrop 函数中有一种方法可以阻止它?
我有一个包含正常事件和 allDay 事件的完整日历。
我想禁止 allDay-events 被拖到议程视图中的正常事件中。
全天事件从一开始就设置了开始时间和结束时间,所以我无法检查结束时间是否为空。
也许 eventDrop 函数中有一种方法可以阻止它?
检查这个小提琴:http: //jsfiddle.net/100thGear/GPx28/
需要注意的几点:
allDay
参数不代表事件的 allDay。它代表插槽的全天能力。因此,在周视图中,顶部栏将具有as并且下面的时隙将具有as 。eventDrop
allDay
true
allDay
false
event
参数具有更新的日期/时间。eventDrop
因此,如果您将事件从 allDay 槽移动到 6:30 AM 槽,则此回调中的事件开始实际上会说6:30:00。因此,我将拖动事件的 allDay 参数存储在拖动开始时的变量中(通过eventDragStart
回调)id
属性确定它是否是可重复的事件。在您的小提琴中,allDay 事件和正常事件都具有相同的 id - 这会使您的拖动操作复杂化。如果可以,请避免这种情况。eventDrop
- 而不仅仅是 drop。希望这可以帮助!
有点晚了,但我遇到了类似的问题。我的一些 allDay 事件需要修复,而另一些则不需要。我的解决方案是为每个名为“forceAllDay”的事件添加一个用户定义的值,并将其设置为 true 或 false。
然后在事件丢弃部分添加了这个:
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
if (event.forceAllDay && !allDay) {
revertFunc();
} else {
if (!confirm('Move event?')) {
revertFunc();
} else {
// UPDATE DATABASE
}
}
}
您可以检查 endtime 是否为空。希望能帮助到你
eventDrop: function(event, delta, revertFunc) {
var m = $.fullCalendar.moment(event.end);
if (!m.hasTime() && !event.allDay)
revertFunc();
else {
}
},
根据他们最新的 API 2.xx,您可以这样做:
var draggedEventIsAllDay
var eventDragStart = function(ev) {
draggedEventIsAllDay = ev.allDay;
};
var eventDrop = function(ev, delta, revertFunc, jsEvent, ui, view) {
var data = delta._data,
dayDelta = data.days,
minuteDelta = data.minutes,
allDay;
var start = jQuery.fullCalendar.moment(ev.start.format('MM-DD-YYYY'));
if (start.hasTime()) {
allDay = false;
} else {
allDay = true;
}
if (!allDay && draggedEventIsAllDay || allDay && !draggedEventIsAllDay) {
revertFunc();
}
};