javascript - 显示多个事件源的事件取决于 Fullcalendar 中复选框的选择

标签 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 中表现不佳。

编辑:(感谢托卡拉汉!)。现在只是一个开始。

  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
    ],
    

最佳答案

您需要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
});

关于javascript - 显示多个事件源的事件取决于 Fullcalendar 中复选框的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674076/

相关文章:

jquery - 如何使用等列脚本重新计算高度

php - 在客户端(JQuery)和服务器(PHP)之间同步表单验证 - 最佳方法

javascript - 未找到 ID 当在外部选择数据库中使用 ajax 进行使用功能单击 js 时

javascript - knockout.js、knockout-sortable 和默认文本

javascript - 自动将多个变量定义重构为单个声明

javascript - 如何获取动态加载的文本框的id -jquery

javascript - 如何取消 AJAX 中的复选框?

javascript - React.JS 组件类中的函数未定义错误

javascript - 替代在 url 中使用 hashbangs 来解决 IE9 问题

javascript - 将 http 响应数组放入 $scope 后无法使用它