onChange函数后,Fullcalendar中未显示默认事件

时间:2012-12-11 05:35:08

标签: jquery joomla fullcalendar

请查看代码以供参考

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

2 个答案:

答案 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