0

を使用する$('#calender).fullCalendar('removeEvents');と、現在の月 (12 月) のイベントのみが削除され、他の月 (11 月、1 月、2 月など) は削除されませんでした。

すべてのイベントを削除するにはどうすればよいですか?

$(document).ready(function(){
    var UsrAux;        
    UsrAux=$('#name').val();                  
    $('#name').blur(function(){    
        UsrAux=$('#name').val();                        
        var source =   {
            url: 'CalendarServer.php',
            type: 'POST',
            data: {                            // Parms
                uno: 'Somenthing',    
                UsrCdg: UsrAux                                            
            },
            error: function() {
                alert('error!');
            },
            color: '#e2ebef',   // a non-ajax option
            textColor: 'black' // a non-ajax option
        };                                 
        $('#calendar').fullCalendar('removeEvents');
        $('#calendar').fullCalendar('addEventSource', source);
    });  

    $('#calendar').fullCalendar({
        draggable: true, 
        height: 400,    
        cache: true, 
        eventSources: [
        // your event source
        {
            url: 'CalendarServer.php',
            type: 'POST',
            data: {                            // Parms
                uno: 'something',    
                UsrCdg: $('#name').val()                                            
            },
            error: function() {
                alert('error!');
            },
            color: '#e2ebef',   // a non-ajax option
            textColor: 'black' // a non-ajax option
        }]       
    });
});
4

1 に答える 1

0

イベントのサブセットを削除する場合、この場合、各イベントに追加された追加クラス名 (「テンプレート」) でフィルタリングしています。

$myCal.fullCalendar( 'removeEvents', function( event ) {
     if( _.indexOf( event.className, 'template' ) > -1 ) {
          return true;
     }
     else {
          return false;
     }
} );

あなたの場合、毎月の変更は指定されたソースからリロードされると思います。この動作を回避する 1 つの方法は、ソースをカレンダーの外にロードしてから、配列を挿入することです。例えば:

var myCalEvents = fetchEvents(...);

// this is not reload with each change in calendar view 
$myCal.fullCalendar( 'addEventSource', myCalEvents );

編集

問題を分解します。

まずは各人のカレンダーをプルダウンする関数を作成

function getCalByPersonId( perId ) {
  // returns an array of fullcalender events pulled from the server
  // note each event will have a css class added by the name of
  // 'perid_x' where 'x' ist he perId parameter
  return ...{ajax call goes here}
}

次に人物変更イベントを処理する関数を作成します。

function handlePersonChangeEvent( event ) {
  // first extract person id
  var perId = ... {code to get the person id}

  // clear any existing events for a previously selected person
  if( currentPerId && currentPerId !== perId ) {
    ...{remove code from above goes here, but replace 'template' with 'perId_x' where x is the currentPerId}
  }

  // add the new person's events to the calendar
  $myCal.fullCalendar( 'addEventSource', function() {
    return getCalByPersonId( perId );
  } );

  // set the current person id
  currentPerId = perId;
}

あなたが達成しようとしていることは多かれ少なかれできると思います。

于 2012-12-14T15:41:28.847 に答える