2014-02-10 236 views
3

我正在使用最新的fullcalendar,并想知道如果有人能告诉我如何根据其值改变事件的背景颜色?例如,如果value是Yes,那么bg是绿色,如果value是No,那么bg是红色的(我的Description字段是包含Yes或No值的实际字段)。这里是我的代码:Fullcalendar - 基于值更改事件颜色

$(document).ready(function() { 
    var date = new Date(); 
    var d = date.getDate(); 
    var m = date.getMonth(); 
    var y = date.getFullYear(); 

    var calendar = $('#calendar').fullCalendar({ 
    editable: true, 
    header: { 
    left: 'prev,next today', 
    center: 'title', 
    right: 'month,agendaWeek,agendaDay' 
    }, 

    events: "events.php", 

    // Convert the allDay from string to boolean 
    eventRender: function(event, element, view) { 
    if (event.allDay === 'true') { 
    event.allDay = true; 
    } else { 
    event.allDay = false; 
    } 
    element.find('.fc-event-title').append("<br/>Successful?: <span class='myClass'><b>" + event.description + "</b></span>"); 
    }, 
    selectable: false, 
    selectHelper: true, 
    select: function(start, end, allDay) { 
    var title = prompt('Event Title:'); 
    var url = prompt('Type Event url, if exits:'); 
    if (title) { 
    var start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"); 
    var end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: 'add_events.php', 
    data: 'title='+ title+'&start='+ start +'&end='+ end +'&url='+ url , 
    type: "POST", 
    success: function(json) { 
    alert('Added Successfully'); 
    } 
    }); 
    calendar.fullCalendar('renderEvent', 
    { 
    title: title, 
    start: start, 
    end: end, 
    allDay: allDay 
    }, 
    true // make the event "stick" 
    ); 
    } 
    calendar.fullCalendar('unselect'); 
    }, 

    editable: false, 
    eventDrop: function(event, delta) { 
    var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: 'update_events.php', 
    data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
    type: "POST", 
    success: function(json) { 
    alert("Updated Successfully"); 
    } 
    }); 
    }, 
    eventResize: function(event) { 
    var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
    var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
    $.ajax({ 
    url: 'update_events.php', 
    data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
    type: "POST", 
    success: function(json) { 
    alert("Updated Successfully"); 
    } 
    }); 

} 

    }); 

}); 

谢谢。

+0

虽然每个事件对象,你可以基于像标题条件添加颜色参数:本[“事件名称”],启动:这个[“日期”],终点:这[“日期”],ID:这个[ '日期'],颜色:'绿色' –

回答

8

以下是一个示例,您可以使用eventRender http://arshaw.com/fullcalendar/docs/event_rendering/eventRender/。如果描述等于“是”,则将元素背景颜色设置为黑色。

$('#calendar').fullCalendar({ 
      ... 
      eventRender: function(event, element) { 
       if(event.description == "yes") { 
        element.css('background-color', '#000'); 
       } 
      }, ... 
+0

非常感谢! – user1060641

+0

@MarCrazyness你会做什么来检查一个空的描述(例如)?我用'if试试了它(event.description ==“”){};'但是这导致我接收到“undefined” – Flouks

+0

你能给我发一个小提琴@Flouks吗?你的event.description也可以为null? – MarCrazyness