2011-01-13 75 views
3

我想禁止fullcalendar在其他月份單元格中顯示事件。我想我可以用eventRender事件做到這一點。防止在jQuery FullCalendar中渲染其他月事件

$('#calendar').fullCalendar({ 
    events: $.fullCalendar.myFeed(), 
    eventRender: function (event, element) { 
     if (event.start.getMonth() != ????) 
      $(element).hide(); 
    } 
}); 

我想不出什麼來代替????獲取日曆的當前月份。任何人有一些提示?

回答

3

我想沒有辦法從這個事件中引用父日曆。 「this」是指事件對象。我沒有意識到視圖也作爲第三個參數傳遞。我可以這樣使用下面的代碼來完成:

$('#calendar').fullCalendar({ 
     events: $.fullCalendar.myFeed(), 
     eventRender: function (event, element, view) { 
      if (event.start.getMonth() != view.start.getMonth()) 
       return false; 
     } 
    }); 
+0

這是一個很好的解決方案。但是有沒有辦法在日曆中不顯示這些日期? – Chookoos 2013-09-19 04:20:21

2

如果您使用一年視圖(https://github.com/tpruvot/fullcalendar)一fullcalendar。 您不能在年視圖中使用view.start.getMonth()。 我用一個小竅門,通過eventAfterRender:

eventAfterRender: function (event, element, view) { 
    var col=element.closest('td').index()+1; 
    var $cellh=element.closest('table').find('thead td:nth-child('+col+')'); 
    if ($cellh.hasClass('fc-other-month') == true) 
      element.css('visibility','hidden') 
}, 
0

你可以用一些自定義樣式

.fc-other-month { 
    background: white !important; 
} 

.fc-row .fc-bg { 
    z-index: 5; 
    pointer-events: none; 
} 

做這裏的解決方案:使用fc-other-month天超過curent-month背景白色的一天。

0

eventRender: function(event, element) { 
 

 
    var view = $('#calendar').fullCalendar('getView'); 
 
    if (event.start.month() == view.intervalStart.month()) { 
 
    element.addClass("bg-blue"); 
 
    } 
 
},