fullcalendar的eventClick可能存在错误?

时间:2017-06-07 10:43:17

标签: javascript jquery fullcalendar

以下是相关代码段:

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的事件呈现错误还是我的代码在某处失败了?

1 个答案:

答案 0 :(得分:0)

我认为无论何时使用任何按钮,您都需要针对所有按钮点击处理程序运行.off。目前,您只删除实际点击的按钮的处理程序。如果您不删除它们,那么如果将来点击其他按钮,这些处理程序将保留并再次使用。这正是您遇到的情况。

在您描述的情况下,我怀疑是因为当您关闭第一个事件时,您没有删除&#34;点击&#34;处理程序与&#34;提交&#34;与该事件一起发生的按钮。然后,当您更改第二个事件的标题时,它会运行&#34;单击&#34; 两个事件的处理程序,因为您从未删除过第一个处理程序。因此,为什么第一个事件的标题在不应该被改变的时候被改变。