2017-02-21 2 views
2

Ich habe ein Problem mit der Schaltfläche klicken in modal (mit FullCalendar).Fullcalendar modal button click läuft mehr mal

Mein Plan ist:

  1. Klicken Sie auf Ereignis
  2. Modal mit 3 Optionen erscheint
  3. bestätigen Wert in MySQL-Datenbank ändert/Refuse ändert einen Wert in MySQL-Datenbank

Wenn ich es einmal versuche, funktioniert es sehr gut. Aber wenn ich das modale schließe und ein anderes öffne, klicke ich auf den Ablehnen/bestätigen Knopf, dann läuft es öfter (2, 4 ...). Was ist das Problem?

modal:

<div id="eventContent" title="Event Details" style="display:none;"> 
    Name: <span id="name"></span><br> 
    Start: <span id="startTime"></span><br> 
    End: <span id="endTime"></span><br><br> 
    <p id="eventInfo"></p> 
    <button id="confirm_button" type="button">Confirm</button> 
    <button id="refuse_button" type="button">Refuse</button> 
    <button type="close_button">Close</button> 
</div> 

eventRender:

<script> 
    $(document).ready(function() { 

     $('#calendar').fullCalendar({ 
      header: { 
       left: '', 
       center: 'prev title next', 
       right: '' 
      }, 
      events: "http://localhost/calendar_directory/calendar_db_connect.php", 
      eventRender: function (event, element) { 
       element.click(function() { 
        var start = $.fullCalendar.formatDate(event.start, "YYYY-MM-DD"); 
        var end = $.fullCalendar.formatDate(event.end, "YYYY-MM-DD"); 

        $("#name").html(event.title); 
        $("#startTime").html(start); 
        $("#endTime").html(end); 
        $("#eventContent").dialog({modal: true, title: event.title, width: 350}); 


        $("#refuse_button").click(function() 
        { 
         var id = event._id; 
         var confirmed_number = 2; 
         var decision = confirm("Do you really want to refuse that?"); 

         if (decision) 
         { 
          $.ajax({ 
           url: "http://localhost/calendar_directory/confirm_events.php", 
           data: '&id=' + id + '&confirmed_number=' + confirmed_number, 
           type: "POST", 
           success: function (json) 
           { 
            console.log(id); 
            return; 
           } 
          }); 
         } 
        }); 

        $("#confirm_button").click(function() 
        { 
         var id = event._id; 
         var confirmed_number = 1; 
         var decision = confirm("Do you really want to confirm that?"); 
         if (decision) 
         { 
          $.ajax({ 
           url: "http://localhost/calendar_directory/confirm_events.php", 
           data: '&id=' + id + '&confirmed_number=' + confirmed_number, 
           type: "POST", 
           success: function (json) { 
            console.log("confirmed"); 
            return; 
           } 
          }); 
         } 
        }) 
       }); 
      }, 

     }); 
    }); 
</script> 

Database structure here:

bestätigt Spalte sein kann: 0,1 oder 2

+0

Hinweis: jeder Klick wiederholt. 1, Modal erscheint-> klicken Sie auf verweigern -> verweigern ok-> schließen, 2, Modal erscheint-> klicken Sie auf verweigern -> -> verweigern ok-> verweigern ok-> schließen, 3, Modal erscheint-> klicken auf Müll -> Müll ok-> Müll ok -> Müll ok-> schließen, – danielori

Antwort

0

den gleichen Handler das Click-Ereignis zugewiesen.

Die Lösung lautet:

$("#refuse_button").unbind("click").click(function(){ 
    /*Your code goes here*/ 
} 
$("#confirm_button").unbind("click").click(function(){ 
    /*Your code goes here*/ 
}