FullCalendar已选多日期无法清除,如何实现重置选中日期功能?
问题原因
你的代码存在两个核心问题导致清除功能失效:
- 调用
removeEventSources的传参不符合要求:该方法需要传入事件源实例、事件源ID或者事件源数组,你传入的是单个事件对象组成的数组,无法匹配到已添加的事件源,所以删除操作不生效 - 变量拼写错误:你定义的全局变量是
window.batchIDs(大写D),重置时写为window.batchIds(小写d),会导致后续ID计数逻辑出错
解决方案
最简单的修改方式是直接按事件属性筛选删除你添加的选中背景事件,不需要依赖已存储的事件列表,修改refreshbutton的点击回调逻辑即可:
customButtons: { refreshbutton: { text: 'refresh', click: function () { console.log('refresh clicked'); // 筛选删除所有标记为block的选中背景事件 $("#calendar").fullCalendar('removeEvents', function(event) { return event.block === true; }); // 重置所有全局存储变量 window.selectedDates = []; window.batchEvents = []; window.batchIDs = []; } }, // 其余按钮逻辑保持不变 selectedButton: { text: 'Check Days', click: function () { console.log(window.selectedDates); console.log(window.batchEvents); } } }
如果要继续使用removeEventSources方法实现,需要调整事件源的存储逻辑:每次调用addEventSource时,把返回的事件源实例存到batchEvents数组里,而不是存事件配置对象,这样调用删除方法时就能正确匹配到对应事件源。
内容的提问来源于stack exchange,提问作者user2018
相关产品推荐
相关产品推荐

