Fullcalendar - 限制可选择一天

时间:2011-08-15 23:23:25

标签: fullcalendar

默认情况下,如果启用“可选”属性,则可以单击并拖动并选择几天。我想只允许用户选择一天,而不是拖动多个。有没有办法启用“可选”,但是禁用它附带的拖动功能?

9 个答案:

答案 0 :(得分:15)

如果您想在议程周视图中将突出显示限制为一天,您可以使用以下内容:

  selectConstraint:{
      start: '00:01', 
      end: '23:59', 
    },

如果您想限制可以使用的事件

eventConstraint:{
      start: '00:00', 
      end: '24:00', 
    },

答案 1 :(得分:3)

在select回调中,添加以下功能可以解决问题: (fullcalendar 2使用moment.js)

if (start.add('days', 1).date() != end.date() )
  $scope.eventCal.fullCalendar('unselect');

资源:

http://arshaw.com/fullcalendar/docs/selection/select_callback/ http://arshaw.com/fullcalendar/docs/selection/unselect_method/

答案 2 :(得分:1)

您可以通过传递fullcalendar'选择'来选择单个日期或时间。 dayClick事件监听器的方法:

$('#myCalendar').fullcalendar({
    dayClick: function(date,jsEvent,view) {
        $('#myCalendar').fullcalendar('select', date);
    }
});

请注意,您还需要触发“取消选择”。下一个回调(或dayClick)的方法。

答案 3 :(得分:0)

目前不是:如果不修改来源,则无法自定义可选天数范围。

答案 4 :(得分:0)

仅当用户选择一天时才会执行

// ...
select: function(start, end){
    if(moment(start._d).add(1, 'days').format('YYYY-MM-DD')==moment(end._d).format('YYYY-MM-DD')){
            //  just select one day
    }
},
// ...

答案 5 :(得分:0)

为什么不使用selectAllow

首先将startend时间转换为秒。将其与一天中的秒数进行比较。

工作解决方案:

selectAllow: function (e) {
   if (e.end.getTime() / 1000 - e.start.getTime() / 1000 <= 86400) {
       return true;
   }
}

答案 6 :(得分:0)

简单地:

selectAllow: function (selectInfo) {
    return selectInfo.end.diff(selectInfo.start, 'days') == 1;
}

答案 7 :(得分:0)

此配置设置在 FullCalendar v5 上对我有用:

selectAllow: function(selectionInfo) {
    let startDate = selectionInfo.start;
    let endDate = selectionInfo.end;
    endDate.setSeconds(endDate.getSeconds() - 1);  // allow full day selection
    if (startDate.getDate() === endDate.getDate()) {
        return true;
    } else {
        return false;
    }
}

答案 8 :(得分:0)

对我来说,像这样使用 selectAllow 选项有效

selectAllow: function(selectionInfo) {
        // Don't allow creation of events over more than 1 day
        return moment(selectionInfo.start).utcOffset(false).isSame(moment(selectionInfo.end).subtract(1, 'second').utcOffset(false), 'day');
    },

我使用 utcOffset(false) 是因为无论出于何种原因它没有它就不能可靠地工作,我使用了subtract(1, 'second') 因为结束日期是包含在内的,所以没有它你不能选择结束那天