2013-12-22 47 views
7

我在我的網站上使用FullCalendar.js。我從後端設置了事件。我想改變有事件的一天的外觀。換句話說,我需要某種類型的「fc-day」類和其中的事件。如何突出顯示在FullCalendar.js中有一個事件的日子?

My code looks like and you see it on jsFiddle:

$('#calendar').fullCalendar({ 
    events: [{ 
     title: 'event1', 
     start: '2013-01-01' 
    }, { 
     title: 'event2', 
     start: '2013-12-05', 
     end: '2013-12-07' 
    }, { 
     title: 'event3', 
     start: '2013-12-15' 
    }] 
}) 
+0

沒有單一的答案至今??? –

+0

你想要改變什麼?你可以在你的頁面添加.fc-event {background-color:red;},它會使事件顏色變爲紅色。或使用jquery選擇所有div與這個類和addClass什麼你想設置。 – Neha

+0

檢查工作演示在這裏http://jsfiddle.net/subodhghulaxe/sj5CD/ –

回答

4

我無法找到所需的屬性或方法Fullcalendar的文檔中使用。

我想出了一種混亂的解決方案:由數據屬性添加類:

function addClassByDate(date) { 
    var dataAttr = getDataAttr(date); 
    $("[data-date='" + dataAttr + "']").addClass("hasEvent"); 
} 

function getDataAttr(date) { 
    return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + (date.getDate().toString().length === 2 ? date.getDate() : "0" + date.getDate()); 
}; 

它工作正常的設置,你在你的問題已經提供。

工作的例子可以在這裏找到:http://jsfiddle.net/6NShN/9/

+0

我不得不改變這個 'function getDataAttr(date){ return date.getFullYear()+「 - 」+((date.getMonth )+1).toString()。length === 2?(date.getMonth()+ 1):「0」+(date.getMonth()+ 1))+「 - 」+(date.getDate() .toString()。length === 2?date.getDate():「0」+ date.getDate()); };' 作爲數據日期屬性似乎使用前導0爲單位數字月和Date.getMonth()是0索引(例如0 == 1月),而數據日期是1索引(01 == 1月)。否則好的解決方案 –

+0

這個解決方案適用於我,但是在幾天事件的最後一天,還沒有「hasEvent」類。任何幫助? –

+0

我之前在你的小提琴中設置了這個: evFinishDate.setDate(evFinishDate.getDate()+ 1); –

0

您可以在fullcalender .fc事件類它不是直接的方法,但其作品的基礎添加類。

Fiddle demo

$(document).ready(function(){ 
    $(".fc-event").addClass("myclass"); 
    }); 
+0

你在說哪個版本? –

0

繼承人另一小提琴JS FIDDLE

只需通過添加

textColor: 'white', 
backgroundColor:'purple' 

你可以改變風格

JS代碼:

$('#calendar').fullCalendar({ 

    eventSources: [ 

     // your event source 
     { 
      events: [ 
     { 
      title : 'event1', 
      start : '2013-01-01' 
     }, 
     { 
      title : 'event2', 
      start : '2013-12-05', 
      end : '2013-12-07' 
     }, 
     { 
      title : 'event3', 
      start : '2013-12-15' 
     }], 

      textColor: 'white', 
      backgroundColor:'purple' 
     } 

     // any other event sources... 

    ] 

}); 
3

這是我這樣做是爲了給背景顏色爲每一個事件。

JS FIDDLE DEMO

events: [ 
    { 
     title: 'Test1', 
     start: new Date(2014, 2, 28, 12, 0), 
     end: new Date(2014, 2, 30, 12, 0), 
     backgroundColor: '#80ACED', 
    }, 
    { 
     title: 'Test2', 
     start: new Date(2014, 2, 14, 3, 55), 
     end: new Date(2014, 2, 21, 12, 0), 
     backgroundColor: '#80ACED', 
    }, 
    { 
     title: 'Test3', 
     start: new Date(2014, 2, 2, 12, 0), 
     end: new Date(2014, 2, 2, 12, 0), 
     backgroundColor: '#E82525', 
    } 
     ] 

希望這有助於。 參見:http://arshaw.com/fullcalendar/docs/event_data/Event_Object/

+1

他正在尋找改變一天的外觀,而不是事件。 –

3

最後,這是它是如何工作的,我看看這個

jsfiddle

$('#calendar').fullCalendar({ 
     events: [ 
     { 
      title : 'event1', 
      start : '2014-04-01' 
     }, 
     { 
      title : 'event2', 
      start : '2014-04-05', 
     }, 
     { 
      title : 'event3', 
      start : '2014-04-15' 
     } 
    ], 
    eventRender: function (event, element, view) { 
     // like that 
     var dateString = $.fullCalendar.formatDate(event.start, 'yyyy-MM-dd'); 
     view.element.find('.fc-day[data-date="' + dateString + '"]').css('background-color', '#FAA732'); 
    } 

}); 
+0

'formatDate()'是fullcalendar v1,其中v2不起作用,請參閱http://fullcalendar.io/wiki/Upgrading-to-v2/ –

1

這些都不會爲> = 2.0工作,因爲fullCalendar開始使用moment.js進行日期格式化。

下工作對我來說(傳遞給fullCalendar初始化函數):

eventRender: function (event, element, view) { 

var dateString = moment(event.start).format('YYYY-MM-DD'); 

view.element.find('.fc-day[data-date="' + dateString + '"]').addClass('fc-has-event'); 

} 
+0

嗨,它在2.1版上不適用於我。它表示「Uncaught TypeError:無法讀取未定義的fullcalendar的屬性'查找'」 – l1th1um

2

weswesweswes幾乎是正確的view.element應視圖。埃爾

eventRender: function (event, element, view) { 

    var dateString = moment(event.start).format('YYYY-MM-DD'); 

    view.el.find('.fc-day[data-date="' + dateString + '"]').addClass('fc-has-event'); 

} 
+0

這是我發現的唯一解決方案。 – tehlivi

0

Fullcalendar V2,爲agendaWeek觀點:

eventRender: function(event, element, view){ 
    if(view.name=='agendaWeek') { 
     var weekdays = new Array('sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'); 
     var eventweekday = $.fullCalendar.moment(event.start).format('d'); 
     $('.fc-'+weekdays[eventweekday]).css('background-color', '#FFC'); 
    } 
}, 

亮點具有事件的所有天。

example fullcalendar day highlight

4

你可以使用全Canendar的eventRender()財產。

這對我的作品與fullcalendar V2:

$('#calendar').fullCalendar({ 
     events: [ 
     { 
      title : 'event1', 
      start : '2014-04-01' 
     }, 
     { 
      title : 'event2', 
      start : '2014-04-05', 
     }, 
     { 
      title : 'event3', 
      start : '2014-04-15' 
     } 
    ], 
    eventRender: function (event, element, view) { 
     // like that 
     var dateString = moment(event.start).format('YYYY-MM-DD'); 
     $('#calendar').find('.fc-day-number[data-date="' + dateString + '"]').css('background-color', '#FAA732'); 
    } 

}); 

Node: You will need Moment library for this.

+0

第一件事情在2個星期的工作。你真了不起。謝謝。 – Haring10

相關問題