2015-09-04 86 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(); 
       }); 
     },