注册fullcalendar日历左右箭头的点击事件有时会失灵,并且eventAfterAllRender事件可能也会多次触发,所以放弃注册事件。但发现title是正确的,从title中提取year and month,与old year,old month进行对比,值不同时重新刷新页面
$('#calendar').fullCalendar({
height:640,
width: 1200,
themeSystem: 'jquery-ui',
header: {
left: '',
center: 'title',
right: 'prev, next'
},
monthNames: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
monthNamesShort: ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"],
dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"],
today: ["今天"],
firstDay: 1,
buttonText: {
today: '今天',
month: '月',
week: '周',
day: '日'
},
// events:eventss,
dayClick: function (date, allDay, jsEvent, view) {
if (date <= new Date()) {
return;
}
var id = null;
window.openDlg({
url: "~detail-dialog.html?id=" + id,
width: 700,
height: 600,
title: "添加值班人员",
callback: function (details) {
if (details != null && details.length > 0) {
var arrangement = {};
arrangement.details = details;
arrangement.arrangeDate = date._d.getFullYear() + '-' + (date._d.getMonth() + 1) + '-' + date._d.getDate() + " " + details[0].arrangeDate;
arrangement.endDate = date._d.getFullYear() + '-' + (date._d.getMonth() + 1) + '-' + date._d.getDate() + " " + details[0].endDate;
service.add(arrangement, function (result) {
if (result.header.success) {
if (id) {
service.delete(id, function (result) {
});
}
id = result.body.id;
$("#calendar").fullCalendar('renderEvent', {allDay:false,start:date,end:date,id:id, fullname:details[0].user.name,
title:details[0].arrangeDate +"-" + details[0].endDate},
true);
}
})
}
}
});
},
loading: function (bool) {
if (bool) $('#loading').show();
else $('#loading').hide();
},
eventAfterAllRender: function (event, element, view) {
var title = event.title;
title = title.split(" ");
var monthList = ["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
for (var i = 0; i < monthList.length; i++) {
if (title[0] == monthList[i]) {
month2 = i;
}
}
year2 = title[1] - 1900;
if (year1 != year2 || month1 != month2) {
year1 = year2;
month1 = month2;
load(year1,month1);
}
},
eventMouseover: function (calEvent, jsEvent, view) {
$(this).attr('title', calEvent.fullname);
$(this).css('font-weight', 'normal');
},
eventClick: function (event) {
window.openDlg({
url: "~detail-dialog.html?id=" + event.id,
width: 700,
height: 500,
title: "添加值班人员",
callback: function (details) {
if (details != null && details.length > 0) {
var arrangement = {};
arrangement.id = event._id;
arrangement.details = details;
arrangement.arrangeDate = event.start._d.getFullYear() + '-' + (event.start._d.getMonth() + 1) + '-' + event.start._d.getDate() + " " + details[0].arrangeDate;
arrangement.endDate = event.start._d.getFullYear() + '-' + (event.start._d.getMonth() + 1) + '-' + event.start._d.getDate() + " " + details[0].endDate;
service.update(arrangement, function (result) {
if (result.header.success) {
var fullname = "";
for (var i = 0; i < details.length; i++) {
fullname = fullname + details[i].user.name + ",";
}
$("#calendar").fullCalendar('removeEvents',event._id);
$("#calendar").fullCalendar('renderEvent', {allDay:false,start:event.start._d,end:event.start._d,id:result.body.id, fullname:fullname,
title:details[0].arrangeDate +"-" + details[0].endDate},
true);
}
})
}
}
});
},
editable: true,
droppable: true,
eventDrop: function(event,dayDelta,minuteDelta,allDay,revertFunc) {
service.dragUpdate(event.start._d,event._id,function (result) {
})
}
});
if (eventss) {
$('#calendar').fullCalendar('removeEvents');
}
$('#calendar').fullCalendar('addEventSource', eventss );