请查看代码以供参考
<script type='text/javascript'>
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
editable: true,
eventDrop: function(calEvent,dayDelta,minuteDelta,allDay,revetFunc) {
var stDate = $.fullCalendar.formatDate(calEvent.start, 'dd-MM-yyyyy');
$.post('event_update.php',{'allday':allDay, 'event':calEvent.id, 'start':stDate}, function(response){
if(response.length > 0){
alert(response);
revertFunc();
}
});
},
loading: function(bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
}
});
$('#project').change(function() {
var filter = $('#project').val();
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', 'json-events.php?filter='+filter);
$('#calendar').fullCalendar('rerenderEvents');
});
});
</script>
情景1:
在实施onChange功能之前,完整日历将显示所有事件。
情景2:
执行onchange函数(事件过滤器)后,如果用户更改了过滤器选项,它将显示事件。默认情况下不显示任何事件请告诉我如何解决它
答案 0 :(得分:0)
您的日历最初没有事件来源。
删除
$('#calendar').fullCalendar('addEventSource', 'json-events.php?filter='+filter);
而是把它放在初始化中:
events: json-events.php?filter='+filter
答案 1 :(得分:0)
如果您希望日历最初显示所有事件(方案1 ??),则在初始化fullcalendar时需要有一个事件参数(或者手动调用更改事件)。在更改事件发生之前,您的更改过滤器不会被调用,因此页面加载日历时将为空。
$('#calendar').fullCalendar({
...
events: json-events.php?filter='+filter
});
on change事件应该可以工作,但AFIK你可以摆脱rerenderEvents,因为addEventSource应该处理这个。
如果您想在不删除和添加事件源的情况下更改过滤器参数,请每次查看this previous answer