Я настроил несколько фильтров выбора для моего проекта Fullcalendar. Я могу фильтровать по нескольким значениям событий в моем JSON, но я не могу его фильтровать по className
.Фильтр Fullcalendar по классуName
Может ли кто-нибудь сказать мне, что я делаю неправильно?
Вот код, который я использую, и here is a jsfiddle, который повторяет проблему.
<select id="type_selector">
<option value="all">All types</option>
<option value="university">University</option>
<option value="polytech">Polytech</option>
<option value="highschool">High School</option>
</select>
<select id="state_selector">
<option value="all">All types</option>
<option value="CA">California</option>
<option value="MI">Michigan</option>
<option value="VT">Vermont</option>
</select>
<select id="color_selector">
<option value="all">All colors</option>
<option value="red">Red schools</option>
<option value="orange">Orange schools</option>
<option value="green">Green schools</option>
</select>
<div>
<div id='calendar'></div>
</div>
<script>
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var calendar = $('#calendar').fullCalendar({
defaultView: 'agendaWeek',
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
selectable: true,
selectHelper: true,
year: 2016,
month: 08,
date: 25,
slotMinutes: 15,
editable: true,
events: [{
title: 'Michigan University',
start: '2016-09-26',
type: 'university',
state: 'MI',
className: 'red'
}, {
title: 'California Polytechnic',
start: '2016-09-27',
type: 'polytech',
state: 'CA',
className: 'orange'
}, {
title: 'Vermont University',
start: '2016-09-28',
type: 'university',
state: 'VT',
className: 'red'
}, {
title: 'Michigan High School',
start: '2016-09-29',
type: 'highschool',
state: 'MI',
className: 'green'
}, {
title: 'Vermont High School',
start: '2016-09-30',
type: 'highschool',
state: 'VT',
className: 'green'
}, {
title: 'California High School',
start: '2016-09-30',
type: 'highschool',
state: 'CA',
className: 'green'
}],
eventRender: function eventRender(event, element, view) {
return ['all', event.type].indexOf($('#type_selector').val()) >= 0
&& ['all', event.state].indexOf($('#state_selector').val()) >= 0
&& ['all', event.className].indexOf($('#color_selector').val()) >= 0
}
});
$('#type_selector').on('change', function() {
$('#calendar').fullCalendar('rerenderEvents');
})
$('#state_selector').on('change', function() {
$('#calendar').fullCalendar('rerenderEvents');
})
$('#color_selector').on('change', function() {
$('#calendar').fullCalendar('rerenderEvents');
})
});
</script>
Большое спасибо за вашу помощь @milz !!! Мне было интересно, могу ли я использовать свойство нейтрального массива json, например «myClass», и получить FullCalendar для вызова его также для «className»? Или я могу использовать официальное свойство DOM «className», а также присвоить его значение нейтральной переменной «myClass», а затем вызвать нейтральную переменную из моей процедуры возврата? Я стараюсь, чтобы процесс ввода данных был как можно короче. – lbriquet
@lbriquet Вы не сможете использовать только нейтральное свойство, потому что вы потеряете цвет фона. Вы можете, однако, установить 'className' для стилей и установить' myClass' для фильтрации. Взгляните на [этот обновленный скрипт] (http://jsfiddle.net/milz/kzfwro22/4/) –
Еще раз спасибо за помощь @milz! То, что я надеялся сделать, это сделать что-то вроде var myClass = event.className ... и затем использовать его с возвратом ['all', event.myClass] .indexOf ($ ('# color_selector'). Val())> = 0 Возможно ли это? – lbriquet