以下是相关代码段:
eventClick: function(calEvent) {
if(user != calEvent.modified_by && calEvent.modified_by != 0){
$('.antoconfirm').css("display", "inline-block");
}
$('#fc_edit').click();
$('#title2').val(calEvent.title);
//-----------Submit button click-------------------
$(".antosubmit2").on("click", function(e) {
e.preventDefault();
e.stopImmediatePropagation();
calEvent.title = $("#title2").val();
calEvent.confirm = 0;
calEvent.backgroundColor = '#ddbd39';
dbTitle = calEvent.title;
//ajax goes here, works fine
calendar.fullCalendar('updateEvent', calEvent);
$(".antosubmit2").off("click");
$('.antoclose2').click();
});
//---------------------------------------------------
//-----------Close button click-------------------
$(".antoclose2").on("click", function() {
console.log(calEvent.title);
$(".antoclose2").off("click");
});
//---------------------------------------------------
return false;
},
$('#fc_edit').click();
调用编辑完成的模式。有两个按钮,类为“antosubmit2”和“antoclose2”。你点击一个事件,模态出现,你改变标题,点击提交,模态消失,瞧,标题改变了(在这个例子中从“new1”到“new3”):Test events, title change < / p>
当仅使用提交按钮时,一切正常,您可以在另一个事件之后更改一个事件。另一方面,当您在一个事件上使用关闭按钮并尝试更改另一个事件的标题时,第一个事件将被更改:Test events, title change after close
现在在“ajax到这里,工作得很好”部分是一个ajax POST,无论日历显示什么,它都会发送正确的数据,在页面重新加载后,所有内容都按照应有的方式进行编辑。
这是fullcalendar的事件呈现错误还是我的代码在某处失败了?
答案 0 :(得分:0)
我认为无论何时使用任何按钮,您都需要针对所有按钮点击处理程序运行.off
。目前,您只删除实际点击的按钮的处理程序。如果您不删除它们,那么如果将来点击其他按钮,这些处理程序将保留并再次使用。这正是您遇到的情况。
在您描述的情况下,我怀疑是因为当您关闭第一个事件时,您没有删除&#34;点击&#34;处理程序与&#34;提交&#34;与该事件一起发生的按钮。然后,当您更改第二个事件的标题时,它会运行&#34;单击&#34; 两个事件的处理程序,因为您从未删除过第一个处理程序。因此,为什么第一个事件的标题在不应该被改变的时候被改变。