我有下面的日历ajax代码:
$.ajax({
url: 'display_event.php',
dataType: 'json',
success: function (response) {
var result=response.data;
$.each(result, function (i, item) {
events.push({
event_id: result[i].event_id,
title: result[i].title,
start: result[i].start,
end: result[i].end,
//color: result[i].color,
url: result[i].url
});
})
var calendar = $('#calendar').fullCalendar({
defaultView: 'month',
timeZone: 'local',
editable: true,
selectable: true,
selectHelper: false,
select: function(start, end) {
//alert(start);
//alert(end);
$('#event_start_date').val(moment(start).format('YYYY-MM-DD'));
$('#event_end_date').val(moment(end).format('YYYY-MM-DD'));
$('#event_entry_modal').modal('show');
},
events: events,
eventRender: function(event, element, view) {
element.find('.fc-title').append(" <b>" + event.end +"</b>");
element.bind('click', function() {
alert(event.end);
});
}
}); //end fullCalendar block
},//end success block
error: function (xhr, status) {
alert(response.msg);
}
});
我已在事件标题中附加“event.end”,但 event.end 以毫秒为单位显示。我希望它根据我的数据库和 JSON 数据以 YYYY-MM-DD 显示。我已检查 JSON 数据是否传递 YYYY-MM-DD (2023-08-13)。
我的输出显示如下。我希望该活动显示为“GovernmentHoliday 2023-08-13”。
警报似乎显示正确
element.bind('click', function() {
alert(event.end);
});
当您连接 Moment 对象的值时,它将返回以毫秒为单位的 unix 时间戳。当您将 Moment 对象传递给警报时,会调用其
toString()
方法。
请注意,对于
event.end
和 null
具有相同值的事件,start
将是 end
(例如,单日全天事件)。在尝试使用它之前,您应该检查 event.end
是否不为空。
eventRender: function (event, element) {
if (event.end !== null) {
element.find('.fc-title').append(" <b>" + event.end.format('YYYY-MM-DD') + "</b>");
}
}
您似乎使用的是相当旧版本的 FullCalendar。您应该考虑切换到普通 JS 版本,该版本删除了 Moment 和 jQuery 依赖项。