jquery - When adding events to FullCalendar they are duplicated - multiple calls made to add event without cause -
i using fullcallendar , jquery. made google calendar interface , pull events json file. when user clicks on day div opens them enter info click add event , event added. on second click when user clicks add event 2 events added, 1 on first clicked day , second on selected day. on third click 3 events added , on. here code: var c = 0;
function cleaneventbubble(){ $('#event').hide(); $('td').removeclass('selday'); $('#eventdate').text(''); $('#calevent,input:text').val(''); } function createevent(date, allday, jsevent, view, selcell){ //clean event bubble , calendar cleaneventbubble(); $(selcell).addclass('selday'); $('#eventdate').append(date.todatestring()); $('#event').css('left', jsevent.pagex); $('#event').css('top', jsevent.pagey); $('#event').show(); $('#btnaddevent').click(function(){addevent(date, $('#title').val(), c)}); } function addevent(date, title, id){ $.ajax({ type:'get', <cfoutput>url: '#strurl#'</cfoutput>, data:{ method:'addevent', user:1, title:title, allday:'true', start:$.fullcalendar.formatdate( date, 'yyyy-mm-dd' ) }, datatype: 'json', success: function(data, status){alert('response: ' + data);}, error: function(data){$('#returnmess').html(data);} }); $('#calendar').fullcalendar( 'refetchevents' ) cleaneventbubble(); } /**/ function removeevent(id){ $('#calendar').fullcalendar('removeevents', id); } function updateevent(id, title){ var event = $('#calendar').fullcalendar('clientevents', id); event.title = title; $('#calendar').fullcalendar('updateevent', event); } $(document).ready(function() { //create jquery connection obj $('#event').hide(); //make event bubble draggable $('#event').draggable(); $('#evbubbleclose').click(cleaneventbubble); // page ready, initialize calendar... $('#calendar').fullcalendar({ // put options , callbacks here date, allday, jsevent, view dayclick:function(date, allday, jsevent, view){ createevent(date, allday, jsevent, view, this); }, <cfoutput>events: '#strurl#'+'?wsdl&method=getevents'</cfoutput> , theme: true, header: {left: 'prev,next today', center: 'title', right: 'month,agendaweek,agendaday' }, editable:true }); //$('#calendar').fullcalendar('renderevents'); });
ok, here's solution without boolean flags :)
instead of $(this).remove();
use
$('#calendar').fullcalendar( 'removeevents', event.id );
Comments
Post a Comment