2011-01-13 5 views
3

Ich möchte verhindern, dass Vollkalender Ereignisse in den anderen Monatszellen anzeigt. Ich dachte, ich könnte das mit dem eventRender-Event machen.Andere Monatsereignisse durch Rendern in jQuery FullCalendar verhindern

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

Ich kann nicht herausfinden, was die ???? um den aktuellen Monat des Kalenders zu erhalten. Hat jemand ein paar Tipps?

Antwort

3

Ich denke, es gibt keine Möglichkeit, den übergeordneten Kalender von innerhalb dieses Ereignisses zu referenzieren. "this" bezieht sich auf das Ereignisobjekt. Ich habe nicht erkannt, dass die Ansicht auch als dritter Parameter übergeben wird. Ich konnte dies mit dem folgenden Code auszuführen:

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

, dass eine gute Lösung ist. Aber gibt es eine Möglichkeit, diese Daten nicht einmal im Kalender zu rendern? – Chookoos

+0

Ich brauchte auch eine Lösung dafür. Bitte teilen Sie einige Links, wenn jemand eine Lösung für das gleiche hat. – user2518430

2

Wenn Sie ein fullcalendar mit Jahresansicht verwenden (https://github.com/tpruvot/fullcalendar). Sie können view.start.getMonth() nicht in der Jahresansicht verwenden. benutzen ich einen kleinen Trick durch eventAfterRender vorbei:

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

Sie können es mit einigem benutzerdefinierten Stil

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

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

Die Lösung hier: mit Tag des fc-other-month über den Tag von curent-month mit weißen Hintergrund.

0

eventRender: function(event, element) { 
 

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