Fullcalendar 3.1.0(JS/C#)搜索事件后updateEvent无响应无法弹出编辑对话框
FullCalendar 3.1.0 搜索后无法打开编辑对话框问题修复方案
核心问题排查
- API功能误用:
fullCalendar('updateEvent', eventObj)方法的作用是将修改后的事件属性同步刷新到日历视图,本身不具备弹出编辑/删除对话框的能力,你需要的预填充弹窗是项目自定义的业务逻辑,需要手动调用对应弹窗的打开方法。 - 参数取值错误:你的代码中同时将
i.item.label作为时间值格式化跳转日期、又作为事件ID查询事件,明显是后端返回的字段映射错误:后端接口返回的item按|分割后,是[事件时间/名称, 事件ID]的结构,事件ID实际存储在i.item.val中,传错参数导致getEventById返回空值,updateEvent接收空参数自然没有任何效果。
修复步骤
- 先增加日志定位参数是否正确:
select: function (e, i) { $("[id$=hfCustomerId]").val(i.item.val); date = moment(i.item.label, "DD/MM/YYYY HH:mm"); $("#calendar").fullCalendar('gotoDate', date); // 增加以下两行调试,打开浏览器控制台看输出 console.log('查询用的事件ID应为:', i.item.val); // 事件ID存在val字段中 let eventProva = $("#calendar").fullCalendar("getEventById", i.item.val); console.log('查询到的事件对象:', eventProva); if(eventProva) { // 这里不要调用updateEvent,而是触发你自己写的打开编辑弹窗的逻辑,把eventProva传进去预填充 // 示例:openEditModal(eventProva); // 如果确实需要修改事件属性再调用updateEvent,比如修改事件标题: // eventProva.title = '新标题'; // $("#calendar").fullCalendar('updateEvent', eventProva); } else { console.log('未找到对应事件,请检查传入的ID是否正确'); } }
- 确认事件ID字段正确后,把你原有的打开更新/删除对话框的逻辑放到
eventProva存在的分支里,将查询到的事件对象传入对话框做字段预填充即可。
内容的提问来源于stack exchange,提问作者ISO
相关产品推荐
相关产品推荐

