В событии FullCalendar dayClick я могу получить события, которые уже существуют на нажатой дате?
http://arshaw.com/fullcalendar/docs/mouse/dayClick/
Позвольте мне объяснить немного о своем проекте, который я пишу простому php сайту, которые позволяют пользователю добавлять/редактировать событие на календаре.
Проблема состоит в том, когда пользовательский щелчок за пределами области события (верхняя область или нижняя область) даты с существующим событием, она повышает dayclick вместо eventclick. Как я могу инициировать eventclick событие и пропустить dayclick событие, если существует существующее событие на дате?
Ваши события хранятся на стороне клиента или на стороне сервера? Если на стороне клиента, это должно работать специально, если вы хотите, чтобы событие произошло в это время щелчка:
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
$('#calendar').fullCalendar('clientEvents', function(event) {
if(event.start <= date && event.end >= date) {
return true;
}
return false;
});
}
});
Это даст события, которые перекрывают время щелчка и сохраняются на стороне клиента. В интервале на весь день будут перекрываться все события этого дня.
Если вы хотите, чтобы все события происходили непосредственно в эту дату, независимо от того, был ли выбран слот allDay или временной интервал.
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
if(!allDay) {
// strip time information
date = new Date(date.getFullYear(), date.getMonth(), date.getDay());
}
$('#calendar').fullCalendar('clientEvents', function(event) {
if(event.start <= date && event.end >= date) {
return true;
}
return false;
});
}
});
Если ваши события хранятся на сервере, вы захотите взять дату, указанную в вашем обратном вызове dayClick, и использовать ее для создания вызова на ваш сервер для получения информации в любом нужном вам формате.
РЕДАКТИРОВАТЬ Если вы совершаете поездку туда и обратно или пытаетесь получить информацию другими способами
$('#calendar').fullCalendar({
dayClick: function(date, allDay, jsEvent, view) {
var startDate = new Date(date.getFullYear(), date.getMonth(), date.getDay(), 0, 0, 0).getTime();
var endDate = new Date(date.getFullYear(), date.getMonth(), date.getDay(), 23, 59, 59).getTime();
var cache = new Date().getTime();
$.getJSON("/json-events.php?start="+startDate+"&end="+endDate+"&_="+cache,
function(data) {
// do stuff with the JSOn data
}
}
});
И если вы не хотите, чтобы это возвращалось, вы также можете посмотреть, что происходит, скажем, в refetchEvents в fullCalendar .js. Если вы не против отклониться от ствола fullCalendar, вы можете где-нибудь сохранить извлеченные события, чтобы не выполнять кучу манипуляций с DOM (в зависимости от количества событий, поскольку они становятся большими, что может стать громоздким).