我可以阻止事件被拖过开始和结束边界吗?

时间:2011-02-11 21:23:36

标签: jquery fullcalendar

当事件在fullcalendar中可拖动时,我可以将它们拖过开始时间并超过结束时间。这种情况发生在配置了minTime和maxTime以及未配置它们时(即午夜到午夜)。我需要不允许事件被拖过当天的小时边界或配置的时间范围。

我在文档中没有看到有关停止此行为的任何内容。有没有人遇到这个问题并想出一个解决方案,或者有没有人有解决方案来解决这个问题?

3 个答案:

答案 0 :(得分:1)

经过一些研究和实验,我发现此问题的解决方案是使用jQuery UI draggable插件中的containment选项。

要停止问题中描述的行为,请按以下步骤操作:

  1. 搜索名为draggableSlotEvent
  2. 的功能
  3. 在其下,找到eventElement.draggable({
  4. 将以下行作为另一个选项:containment: ".fc-agenda-body table",
  5. 您现在无法将事件拖过小时边界。

答案 1 :(得分:1)

Michael Irigoyen提供的解决方案在我的情况下不适用于FullCalendar v2.0.0一周的议程视图。

我进行了以下更改以使其正常工作:

1。对于时间间隔拖动:在议程周视图中不存在.fc-agenda-body选择器。在draggableSlotEvent上的eventElement.draggable功能中,我已将containment设置为.fc-agenda table

function draggableSlotEvent(event, eventElement, timeElement) {

    // code

    eventElement.draggable({
        containment: '.fc-agenda table',
        // code
    });
}

2。对于时间间隔调整大小:在resizableSlotEvent的函数eventElement.resizable中,我已将containment设置为table.fc-agenda-slots

function resizableSlotEvent(event, eventElement, timeElement) {

    // code

    eventElement.resizable({
        containment: 'table.fc-agenda-slots',
        // code
    });
}

3。日历中的所有表格都不得有保证金底部,否则上述所有内容都将失败。所以,我改变了fullcalendar css:

.fc-view-agendaWeek table {
    margin-bottom: 0px !important;
}

上述所有更改都会完美地限制中午或minTime / maxTime之间的时间间隔。

答案 2 :(得分:0)

目前无法实现,需要创建一个新选项。这是问题: http://code.google.com/p/fullcalendar/issues/detail?id=824