fullcalendar.io - 在内存中保存事件
fullcalendar.io - Holding Event in memory
我相信 javascript 正在回忆这个事件,但我不知道在哪里以及如何绕过它。也许你们可以提供帮助。我创建了一个 JSFiddle 来演示这个问题
所以当你更新一个事件时就会发生这种情况。然后你移动到另一个事件去更新那个事件。它将旧事件带到新事件中。改变开始和结束以及一切。第一个事件更新正常。
点击事件时。这些函数被触发。
function eventClick(calEvent){
$('#edit-event-title').val(calEvent.code);
$('#edit-event-description').val(calEvent.description);
$('#event-start-edit-dpick').data('DateTimePicker').date(calEvent.start).format('YYYY-MM-DD');
$('#event-start-time-edit-dpick').data('DateTimePicker').date(calEvent.start).format('HH:mm');
$('#event-end-edit-dpick').data('DateTimePicker').date(calEvent.end).format('YYYY-MM-DD');
$('#event-end-time-edit-dpick').data('DateTimePicker').date(calEvent.end).format('HH:mm');
$('#fc_edit').click();
}
function createUpdateEvent(calEvent, create) {
//create event
if(create){
// create the event
} else {
$(".antosubmit2").on("click", function() {
calEvent.code = $("#edit-event-title").val();
calEvent.title = $("#edit-event-title option:selected").html();
calEvent.description = $("#edit-event-description").val();
calEvent.start = moment($('#event-start-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
$('#event-start-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
$('#event-start-edit-dpick').data('DateTimePicker').date().format('Z'));
calEvent.end = moment($('#event-end-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
$('#event-end-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
$('#event-end-edit-dpick').data('DateTimePicker').date().format('Z'));
calendar.fullCalendar('updateEvent', calEvent);
$('.antoclose').click();
});
}
}
function recalcHeaderHours(event){
var currentday = moment(event.start).format("YYYY-MM-DD");
if (event.totalHours > 0) {
var prev = $("#dailytotal-"+currentday).text() || 0;
$("#dailytotal-"+currentday).text(+prev + +event.totalHours);
}
}
希望大家帮忙。感谢您的宝贵时间:)
我解决了你的问题。
问题是您将点击事件放在第 83 行的“.antosubmit2”中。在第一个事件打开时,将有 1 次点击此 class,但在 2. 事件打开代码中再次点击它。如果你只打开一个事件2次,是没有问题的。但是,如果您在不同的事件中执行此操作,则在第二次打开时,会触发 2 次点击。新添加的点击使用正确的数据,但第一次点击使用第一个事件数据。我猜这是你的问题。
第一次点击应该从“.antosubmit2”解除绑定。
尝试像这样修改您的代码:
function createUpdateEvent(calEvent, create) {
//create event
if(create){
// create the event
} else {
$(".antosubmit2").unbind('click');
$(".antosubmit2").on("click", function() {...
您会看到 "unbind('click')" 行,将其添加到代码中即可。
我相信 javascript 正在回忆这个事件,但我不知道在哪里以及如何绕过它。也许你们可以提供帮助。我创建了一个 JSFiddle 来演示这个问题
所以当你更新一个事件时就会发生这种情况。然后你移动到另一个事件去更新那个事件。它将旧事件带到新事件中。改变开始和结束以及一切。第一个事件更新正常。
点击事件时。这些函数被触发。
function eventClick(calEvent){
$('#edit-event-title').val(calEvent.code);
$('#edit-event-description').val(calEvent.description);
$('#event-start-edit-dpick').data('DateTimePicker').date(calEvent.start).format('YYYY-MM-DD');
$('#event-start-time-edit-dpick').data('DateTimePicker').date(calEvent.start).format('HH:mm');
$('#event-end-edit-dpick').data('DateTimePicker').date(calEvent.end).format('YYYY-MM-DD');
$('#event-end-time-edit-dpick').data('DateTimePicker').date(calEvent.end).format('HH:mm');
$('#fc_edit').click();
}
function createUpdateEvent(calEvent, create) {
//create event
if(create){
// create the event
} else {
$(".antosubmit2").on("click", function() {
calEvent.code = $("#edit-event-title").val();
calEvent.title = $("#edit-event-title option:selected").html();
calEvent.description = $("#edit-event-description").val();
calEvent.start = moment($('#event-start-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
$('#event-start-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
$('#event-start-edit-dpick').data('DateTimePicker').date().format('Z'));
calEvent.end = moment($('#event-end-edit-dpick').data('DateTimePicker').date().format('YYYY-MM-DD') + ' ' +
$('#event-end-time-edit-dpick').data('DateTimePicker').date().format('HH:mm') +
$('#event-end-edit-dpick').data('DateTimePicker').date().format('Z'));
calendar.fullCalendar('updateEvent', calEvent);
$('.antoclose').click();
});
}
}
function recalcHeaderHours(event){
var currentday = moment(event.start).format("YYYY-MM-DD");
if (event.totalHours > 0) {
var prev = $("#dailytotal-"+currentday).text() || 0;
$("#dailytotal-"+currentday).text(+prev + +event.totalHours);
}
}
希望大家帮忙。感谢您的宝贵时间:)
我解决了你的问题。 问题是您将点击事件放在第 83 行的“.antosubmit2”中。在第一个事件打开时,将有 1 次点击此 class,但在 2. 事件打开代码中再次点击它。如果你只打开一个事件2次,是没有问题的。但是,如果您在不同的事件中执行此操作,则在第二次打开时,会触发 2 次点击。新添加的点击使用正确的数据,但第一次点击使用第一个事件数据。我猜这是你的问题。 第一次点击应该从“.antosubmit2”解除绑定。 尝试像这样修改您的代码:
function createUpdateEvent(calEvent, create) {
//create event
if(create){
// create the event
} else {
$(".antosubmit2").unbind('click');
$(".antosubmit2").on("click", function() {...
您会看到 "unbind('click')" 行,将其添加到代码中即可。