【问题标题】:FullCalendar calendar start dateFullCalendar 日历开始日期
【发布时间】:2015-03-25 03:15:29
【问题描述】:

我试图在我的日历上禁用前几天,因此选择事件不会在这些日期执行。

我试过了

  defaultDate: '2015-03-25',
  minDate: '2015-03-25',

  eventConstraint: {
    start: '2015-03-25'
  },

有人知道我该怎么做吗?

谢谢

更新——像这样?

  viewRender: function(view){
          if (view.start < minDate){
              $('#calendar').fullCalendar('gotoDate', minDate);
          }
      },

【问题讨论】:

  • 感谢您的评论。我尝试使用 viewRender,但在我的情况下它不起作用。我想我可能做错了什么。请检查我的更新。
  • @Goddard “选择事件未执行”是什么意思?你的意思是没有呈现事件,或者这个人不能点击/选择以前的日期?

标签: jquery fullcalendar


【解决方案1】:

禁止查看过去

假设您在 viewRender 更新中的代码是所需的行为,它应该是:

viewRender: function(view){
      if (view.start.isBefore(moment())){  //if view start is before now
          $('#calendar').fullCalendar('gotoDate', moment); //go to now
      }
  },

Fullcalendar 使用 momentjs 库作为日期,因此您不能使用 &lt; 进行比较。

JSFiddle demo

但这有点奇怪。你确定你不想让人们看到过去吗?一个月过半的时候呢?

将事件限制在当前

让我们添加一些调整以使其更有用:

  • 两个background events,都覆盖相同的日期(过去到当前日期/时间)。我们需要一个作为全天和一个定时事件,因为:

    定时的后台事件只会在时间渲染 议程视图中的插槽。全天的背景事件只会 在月视图或议程视图的全天时段呈现。

  • selectOverlapeventOverlap 回调。这些提供了一种简单的方法来阻止用户创建事件或将事件转移到过去。
events: [{ // All-day past
    id: 'past',
    start: '1900-01-01',
    end: moment(),
    rendering: 'background',
    allDay: true
}, { // Timed past
    id: 'past',
    start: '1900-01-01',
    end: moment(),
    rendering: 'background',
}, /*other event sources...*/ ],

// Disable selection on top of the "past" event
selectOverlap: function (event) {
    return event.id !== 'past';
},
// Disable dragging on top of the "past" event
eventOverlap: function (stillEvent, movingEvent) {
    return stillEvent.id !== 'past';
},

JSFiddle Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多