显示多个eventSources的事件取决于复选框在Fullcalendar中的选择

时间:2012-12-02 21:31:10

标签: javascript jquery ajax plone fullcalendar

我正在添加Solgema Fullcalendar中的功能 - http://plone.org/products/solgema.fullcalendar/releases/2.1.2 (选择并显示带复选框选择的事件)

我的活动课程如下:

eventSources: [
            ...
            {
                url: '/admin_schedule/get_schedule_db_recurring_events_on_daysweek/',//"<?echo $data_path?>",
                type: 'GET',
                data: {sch_teacher_id: sch_teacher_id},
                backgroundColor: 'red',
            }

        ],

我希望教师“过滤”事件的工具复选框,选中复选框。对于开始只做一个复选框(稍后制作foreach封面)

<div class="box">
        <?php
        $js = 'onClick="rerender_schedule()"';
        echo form_checkbox('teacher', 'vika', FALSE, $js)." Vika";  
        ?>
</div>

通过这段代码我认为,fullcalendar必须调用rerender_schedule()函数,该函数使用 vika的sch_teacher_id

过滤来自eventSource的数据

如果有人可以帮助rerender_schedule()函数,我会感激,因为在ajax中不好。

编辑:(感谢tocallaghan!)。现在只是一个开始。

  1. 我的3个复选框:

        $data = array(
            'name'        => 'teacher',
            'class'       => 'teacher',
            'id'          => 'teacher',
            'value'       => '128',
            'checked'     => FALSE,
            'style'       => 'margin:10px',
            );
    
        echo form_checkbox($data); echo "Вика";  
    
        $data = array(
            'name'        => 'teacher',
            'class'       => 'teacher',
            'id'          => 'teacher2',
            'value'       => '111',
            'checked'     => FALSE,
            'style'       => 'margin:10px',
            );
    
        echo form_checkbox($data); echo "Вася"; 
    
        $data = array(
            'name'        => 'teacher',
            'class'       => 'teacher',
            'id'          => 'teacher3',
            'value'       => '1',
            'checked'     => FALSE,
            'style'       => 'margin:10px',
            );
    
        echo form_checkbox($data); echo "Саша";          
    
  2. ajax改变它们:

    $('.teacher').change(function (event) {
            events1.data.sch_teacher_id = $(this).val(); 
            events2.data.sch_teacher_id = $(this).val();
            events3.data.sch_teacher_id = $(this).val();
            $calendar.fullCalendar('refetchEvents');
        });
    
  3. 对于eventSourses的变种:

    var events1 = {
        url: 'url1',
        type: 'GET',
        data: {sch_teacher_id: $('#teacher').val() },
        success: function (response) {
            return response;
        }
    };
    var events2 = {
        url: 'url2',
        type: 'GET',
        data: {sch_teacher_id: $('#teacher').val() },
        backgroundColor: 'green',
        success: function (response) {
            return response;
        }
    };
    var events3 = {
        url: 'url3',
        type: 'GET',
        data: { sch_teacher_id: $('#teacher').val() },
        backgroundColor: 'red',
        success: function (response) {
            return response;
        }
    };
    
  4. 我的eventSources调用

    eventSources: [
        events1,
        events2,
        events3
    ],
    

1 个答案:

答案 0 :(得分:4)

您需要refetchEvents ,但在调用之前请小心更新数据参数(否则它将保持初始设置值)

$('.CheckBoxClass').change(function () {
    events.data.sch_teacher_id = $(this).val();
    $('#calendar').fullCalendar('refetchEvents');
});

编辑:声明事件对象的代码:

var events = {
    url: 'url',
    type: 'GET',
    data: { Id: $('#divId').val() },
    success: function (response) {
        return response;
    }
};

$('#calendar').fullCalendar({
    events: events
});