【问题标题】:Fullcalendar show events based on two select options基于两个选择选项的完整日历显示事件
【发布时间】:2016-03-22 01:31:00
【问题描述】:

我正在使用 Fullcalendar。我的事件源代码正在获取所有日历事件。事件源为 JSON:

[{ "id": "1", "provider_id": "18", "name":"chris cavage", "location_id":"1"}, 
 { "id": "2", "provider_id": "17", "name":"mark smith", "location_id":"2"}, ...

我在日历上方有两个选择菜单,用于根据提供者和位置显示事件。这是一种过滤所有日历事件的方法:

Providers: <select id="calendar_provider_id">
              <option value="all">All...</option>
              <option value="17">Dr. Carl</option>
              <option value="18">Dr. Paul</option>
           </select>

 Location: <select id="calendar_location_id">
              <option value="all">All...</option>
              <option value="1">A-town</option>
              <option value="12">P-ville</option>
           </select>

When the select options change, I want to re-render the shown events. 我现在只为这样的位置选择菜单工作:

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

            //rerender events for calendar: update the ones shown.
            $('#calendar').fullCalendar('rerenderEvents');

        }
 });

这就是我为 $('#calendar).fullcalendar({

events: 'json_appointments.php',
eventRender: function eventRender( event, element, view ) {
            return ['all', event.location_id].indexOf($('#calendar_location_id option:selected').val()) >= 0;
        }

它只适用于一个选择菜单,但我似乎无法理解如何使这样的东西适用于包括“所有”选项在内的两个选择选项。

这是一个小提琴,向您展示我到目前为止所拥有的东西。如何让第二个菜单选项与第一个菜单选项一起使用,以便过滤器相应地工作?

http://jsfiddle.net/michels287/7h2tn245/

【问题讨论】:

  • 你能用小提琴演示一下吗?
  • 没问题。谢谢。我用小提琴更新了我的问题。

标签: jquery fullcalendar


【解决方案1】:

演示:http://jsfiddle.net/xz2mqLhd/

fullCalendar 配置中的相关代码更改:

eventRender: function eventRender(event, element, view) {
      // Check location AND provider id selection
      return ['all', event.location_id].indexOf($('#calendar_location_id option:selected').val()) >= 0 && ['all', event.provider_id].indexOf($('#calendar_provider_id option:selected').val()) >= 0;
    }

还有

// Trigger event rerendering on provider_id change too
$('#calendar_location_id, #calendar_provider_id').change(function() {
    $('#calendar').fullCalendar('rerenderEvents');
  });

【讨论】:

  • 感谢您抽出宝贵时间。这会帮助我。我正在努力理解 eventRender 语法。你能解释一下它是如何工作的吗?返回 ['all',...] 部分:是 fullcalendar 脚本的一部分还是只是基本的 jQuery?
  • 这只是基本的 javascript/jQuery。由于您希望两个选择都进行过滤,所以我刚刚添加了另一个条件,就像您已经拥有的第一个条件一样 - 如果位置是全部或指定的位置并且提供者是全部或指定的提供者,那么它将返回 true,从而导致事件被呈现
  • 再次感谢您帮助我。我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 2020-07-15
  • 1970-01-01
相关资源
最近更新 更多