2015-09-04 94 views
0

我正在使用fullcalendar。当我点击一个事件时,一个模式打开,您可以选择删除该事件。清除完整日历后事件删除后的数据

当我点击delete时,事件被删除,并启动一个php脚本,它将在ftp上创建一个文件以与另一个程序同步。这工作正常。 当我点击下一个事件的删除。 php脚本创建两个文件。 (第一个和新的一个)

当我点击删除第三个事件时,php脚本创建3 ...依此类推 如果我在删除两个事件之间刷新页面没有问题。

我用$id = $_POST['id'];从在PHP脚本的事件而得到ID

这是我在fullcalendar使用的代码:。

eventClick: function(event, delta) { 
       $('#modalTitle').html(event.title); 
       $('#modalBody').html( 'Start: ' + moment(event.start).format('h:mm') + '</br>' + 
             'Stop: ' + moment(event.stop).format('h:mm') + '</br></br>' + 
             'Locatie: ' + event.location + '</br></br>' + 
             'Info: </br>' + event.description + '</br></br>' + 
             '<b>Debug info:</b> </br>' + 
             '   Event id :' + event.id +'</br>' + 
             '   Resource id :' + event.resourceId +'</br>' + 
             '   Last modified :' + moment(event.datelastmodified).format('YYYY-MM-DD h:mm:ss') 
            ); 
       $('#eventUrl').attr('href',event.url); 
       $("#deleteEventBtn").click(function() { 
                 $('#calendar').fullCalendar('removeEvents',event._id); //external event, therefore using event._id 
                 $.ajax({ 
                   url: 'delete_events.php', 
                   data: '&id='+ event.id , 
                   type: "POST", 
                   success: function(json) { //refresh calendar on success 
                         $('#calendar').fullCalendar('refetchEvents'); 
                          //alert("Updated Successfully"); 
                         }, 
                   error: function(json) { //refresh calendar on error 
                         $('#calendar').fullCalendar('refetchEvents'); 
                         }, 
                   statusCode: {404: function() {alert("delete_events.php niet gevonden. De wijziging wordt niet opgeslagen.")}}, 
                   }); 
                }); 
       $('#DeleteEventModal').modal(); 
     }, 

我discoverd另一个问题,当我点击一个事件模态打开。当我c点击“关闭”关闭模式,点击下一个事件并选择“删除”这两个事件都将被删除。

编辑: 我想我需要像这样的一些代码:

<script> 
$(function(){ 
$('#DeleteEventModal').on('hidden.bs.modal', function() { 
    $('#DeleteEventModal .modal-body').html(''); 
});}) 
</script> 

此代码删除HTML的身体,我需要它来清除事件ID。 每次我点击一个事件event.id被添加到缓存(?)。当我点击删除。带有缓存event.id的每个事件都将被删除,而不仅仅是最后点击的事件。

回答

0

我找到了我的问题的解决方案。每次在日历中单击某个事件时,都会将一个新的处理程序绑定到#deleteEventBtn。因此,当我点击“删除”时,执行了多个处理程序。

工作代码:

eventRender: function(event, element) { 
       element.attr('href', 'javascript:void(0);'); 
       element.click(function() { 
        $('#modalTitle').html(event.title); 
        $('#modalBody').html( 'Start: ' + moment(event.start).format('h:mm') + '</br>' + 
              'Stop: ' + moment(event.stop).format('h:mm') + '</br></br>' + 
              'Locatie: ' + event.location + '</br></br>' + 
              'Info: </br>' + event.description + '</br></br>' + 
              '<b>Debug info:</b> </br>' + 
              '   Event id :' + event.id +'</br>' + 
              '   Resource id :' + event.resourceId +'</br>' + 
              '   Last modified :' + moment(event.datelastmodified).format('YYYY-MM-DD h:mm:ss') 
             ); 
        $('#eventUrl').attr('href',event.url); 
        $("#deleteEventBtn").off('click').on('click', function(e) { 
                  //$('#calendar').fullCalendar('removeEvents',event._id); //external event, therefore using event._id 
                  $.ajax({ 
                    url: 'delete_events.php', 
                    data: '&id='+ event.id , 
                    type: "POST", 
                    success: function(json) { //refresh calendar on success 
                          $('#calendar').fullCalendar('refetchEvents'); 
                           //alert("Updated Successfully"); 
                          }, 
                    error: function(json) { //refresh calendar on error 
                          $('#calendar').fullCalendar('refetchEvents'); 
                          }, 
                    statusCode: {404: function() {alert("delete_events.php niet gevonden. De wijziging wordt niet opgeslagen.")}}, 
                    }); 
        }); 
        $('#DeleteEventModal').modal(); 
       }); 
     },