我希望能够更改任何新创建事件的默认持续时间。
我在dayView中,如果我只是点击(而不是拖放)日历,我会半小时的会话。
默认情况下,我想将其设置为一小时。
也许使用这种代码:
, select: function (startDate, endDate, allDay, jsEvent, view) {
endDate = new Date(startDate);
endDate.setHours(endDate.getHours() + 1);
}
这有效地设置了良好的endDate,但没有进行visualy更新
修改
我正在尝试使行为与Google日历类似:如果用户点击它会选择1h事件,但用户仍然可以选择半小时。
答案 0 :(得分:2)
基于其中一个例子:
select: function(start, end, allDay) {
var title = prompt('Event Title:');
if (title) {
end = new Date(start);
end.setHours(end.getHours() + 1);
calendar.fullCalendar('renderEvent',
{
title: title,
start: start,
end: end,
allDay: allDay
},
true // make the event "stick"
);
}
calendar.fullCalendar('unselect');
},
在问题更新之前:
这样的事情应该有效:
eventClick: function (calEvent, jsEvent, view) {
calEvent.end = new Date(calEvent.start);
calEvent.end.setHours(calEvent.start.getHours() + 1);
$('#calendar').fullCalendar('updateEvent', calEvent);
},
答案 1 :(得分:0)
这是我找到的临时解决方案:
在fullcalendar.js文件中,找到名为slotSelectionMousedown
的函数。将dates = ...
行更改为:
if (cell == origCell && (t.name == "agendaWeek" || t.name == "agendaDay"))
dates = [
d1,
addMinutes(cloneDate(d1), snapMinutes), // calculate minutes depending on selection slot minutes
d2,
addMinutes(cloneDate(d2), snapMinutes + 30)
].sort(cmp);
else
dates = [
d1,
addMinutes(cloneDate(d1), snapMinutes), // calculate minutes depending on selection slot minutes
d2,
addMinutes(cloneDate(d2), snapMinutes)
].sort(cmp);
请注意,这只是临时解决方案/ hack,因为它将被新的Fullcalendar版本覆盖。您可能会尝试再次添加这些行,但它有可能无法正常工作。
答案 2 :(得分:0)
FullCalendar select
callback可让您将end
值重置为您想要的任何值。 start
函数的end
和select
参数为moment.js
个日期。您只需要通过选中hasTime()
确保它不是全天活动,然后您可以使用片刻将end
时间添加30分钟(以使其长达一小时):
select: function(start, end) {
if (end.hasTime()) {
end.add(30, 'minutes');
}
}