0

请检查代码以供参考

<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 功能(事件过滤器)后,如果用户更改过滤器选项,它将显示事件。默认情况下不显示任何事件。请告诉我如何解决它

4

2 回答 2

0

您的日历最初没有事件源。

消除

$('#calendar').fullCalendar('addEventSource', 'json-events.php?filter='+filter);

而是将其放入初始化中:

events: json-events.php?filter='+filter
于 2012-12-11T08:02:39.453 回答
0

如果您希望日历最初显示所有事件(场景 1??),则在初始化 fullcalendar 时需要有一个 events 参数(或者手动调用更改事件)。在发生更改事件之前,不会调用您的更改过滤器,因此当页面加载时,日历将为空。

$('#calendar').fullCalendar({
    ...
    events: json-events.php?filter='+filter
 });

on change 事件应该可以工作,但是 AFIK 你可以摆脱 rerenderEvents,因为 addEventSource 应该处理这个问题。

如果您想更改过滤器参数而不每次都删除和添加事件源,请参阅此先前的答案

于 2012-12-12T01:31:00.347 回答