2016-03-22 48 views
0

我正在使用Fullcalendar。我的事件源代码抓取所有日历事件。事件源是JSON:基于两个选择选项的Fullcalendar显示事件

[{ "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> 

当选择选项的变化,我想重新呈现出事件。 我现在的工作只是位置选择菜单是这样的:

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

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

     } 
}); 

这里就是我的$做('#日历).fullcalendar({

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

这只是伟大工程一个选择菜单,但我似乎无法理解如何使这两种选择,包括'所有'选项这样的工作。

这里是一个小提示,告诉你我到目前为止如何获得第二个菜单选项与第一个选项一起工作,因此过滤r相应地工作?

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

+0

你能在小提琴演示呢? – Blindsyde

+0

没问题。谢谢。我用小提琴更新了我的问题。 –

回答

1

演示:fullCalendar配置里面http://jsfiddle.net/xz2mqLhd/

相关代码更改:

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'); 
    }); 
+0

感谢您抽出时间。这将帮助我。我很努力去理解eventRender语法。你能解释它是如何工作的吗?返回['all',...]部分:是fullcalendar脚本的一部分还是仅仅是基本的jQuery? –

+0

这只是基本的JavaScript/jQuery。既然你想要两个选择过滤我只是添加了另一个条件,如你已经有的第一个条件 - 如果位置是全部或指定的位置并且提供者是全部或指定的提供者,那么它将返回true,导致事件被呈现 – smcd

+0

再次感谢您的帮助。我很感激。 –

相关问题