如何在使用jQuery更改菜单值时重新加载FullCalendar Contact?

Jay*_*len 11 jquery fullcalendar

我在我的网站中使用FullCalendar插件来显示日历事件.我现在要添加的是带有名称的下拉菜单,如果下拉菜单更改值,则根据菜单的值重新加载事件.

如果是另一个单词,默认情况下我会加载我拥有的事件.下拉菜单将在一个菜单中包含所有用户.从该菜单中,我可以更改用户名以在同一页面上查看其他用户事件.

我试图在下拉菜单上添加.change()事件,并在fullCalendar上添加refetchEvents,但它无法正常工作.

有人可以通过传递$('#users_menu')的值来帮助我重新加载这个事件.

以下是我目前的代码

$(document).ready(function() {

    $('#calendar').fullCalendar({

        header: {
          right: 'prev,next today',
          center: 'title',
          left: 'month,agendaWeek,agendaDay'
        },      

        events: {
            url: "ajax/getMyEvents.php",
            type: 'POST',
            data: {
                user_id: $('#users_menu').val()
            }
        },
        timeFormat: 'h:mm TT{ - h:mm} TT',
        defaultView: 'agendaDay',


        eventDrop: function(event, delta, minuteDelta, allDay, revertFunc) {

            if (!confirm("Are you sure about this change?")) {
                revertFunc();
            }
            updateEvent(event, delta, minuteDelta, allDay, 'Drop', revertFunc); 
        },

        eventResize: function(event, delta, minuteDelta, revertFunc) {

            if (!confirm("Are you sure about this change?")) {
                revertFunc();
            }
            updateEvent(event, delta, minuteDelta, false, 'endResize', revertFunc); 
        }


    });


    $('#users_menu').change( function(){

        $('#calendar').fullCalendar( 'refetchEvents' );
    });

});
Run Code Online (Sandbox Code Playgroud)

请注意,我在我的数据方法中传递了user_id值.

此代码适用于加载,但是当我在下拉菜单中更改用户名时,它不会重新加载新事件.

我怎样才能让它发挥作用?

Jay*_*len 29

我终于修好了.

我只好removeEventSource?然后,refetchEvents这个工作是不是很酷:)

这是我的解决方案代码

$('#users_menu').change(function() {

    var events = {
        url: "ajax/getMyEvents.php",
        type: 'POST',
        data: {
            user_id: $(this).val()
        }
    }

    $('#calendar').fullCalendar('removeEventSource', events);
    $('#calendar').fullCalendar('addEventSource', events);
    $('#calendar').fullCalendar('refetchEvents');
}).change();
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你分享你的答案.它只是帮助了我.我通过.change()注意到了; 根据开发人员工具,使ajax调用两次. (3认同)