【发布时间】:2021-12-21 04:15:09
【问题描述】:
我第一次尝试了 FullCalendar 插件,所以我选择了版本 5。
我只想通过在选择下拉列表中选择值来过滤可见事件。
我似乎找不到使用 V5 的简单有效的方法。
我在互联网上找到的许多资源都在谈论使用 rererenderEvents 或 refetchEvents 但它指的是以前版本的插件,这在这里不起作用。
我通过循环遍历事件并使用 setProp 更改可见性找到了一种解决方法,但它看起来不太好。我有很多事件,for 循环需要几秒钟(sn-p 中的注释代码)
非常感谢您的建议和帮助
document.addEventListener('DOMContentLoaded', function() {
let currentDayDate = new Date().toISOString().slice(0, 10);
let calendarEl = document.getElementById('calendar');
let calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek',
firstDay: 1,
hiddenDays: [ 0, 6 ],
slotMinTime: '07:00',
slotMaxTime: '20:00',
allDaySlot: false,
headerToolbar: {
left: 'prev,today,next',
center: 'title',
right: 'timeGridDay,timeGridWeek'
},
views: {
timeGridWeek: {
type: 'timeGrid',
duration: { days: 2 },
buttonText: '2 day'
}
},
events: [{
"title": "Marc",
"start": currentDayDate + " 07:30",
"end": currentDayDate + " 08:30",
"userId": "1"
}, {
"title": "Tom",
"start": currentDayDate + " 09:30",
"end": currentDayDate + " 10:30",
"userId": "2"
}, {
"title": "David",
"start": currentDayDate + " 11:30",
"end": currentDayDate + " 12:30",
"userId": "3"
}]
});
calendar.render();
// $( document ).ready(function() {
// $('#selector').on('change',function(){
// var events = calendar.getEvents();
// for (var i = events.length - 1; i >= 0; i--) {
// if ($("#selector").val() == events[i].extendedProps.userId || $("#selector").val() == "all") {
// events[i].setProp("display", "block");
// }
// else {
// events[i].setProp("display", "none");
// }
// }
// });
// });
});
<link href="https://cdn.jsdelivr.net/npm/fullcalendar@5.10.1/main.min.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/npm/fullcalendar@5.10.1/main.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="selector">
<option value="all">All</option>
<option value="1">Marc</option>
<option value="2">Tom</option>
<option value="3">David</option>
</select>
<div id="calendar">
</div>
【问题讨论】:
-
下面的答案是否解决了您的问题,或者以任何方式帮助您?如果是这样,请记得返回 Stackoverflow 和 mark it as accepted - 如果仍有问题,请添加评论
标签: javascript fullcalendar fullcalendar-5