2011-12-23 7 views
2

カレンダーで選択してイベントを追加すると、情報がPHPスクリプトに送信され、イベントはデータベースに期待どおりに配置されます。すばらしいです!fullcalendar - コールバック関数を選択 - 新しい選択時にイベントをクリアしない

問題は、別の日付を選択してイベントを追加したとき(リフレッシュなし)、MYSQLデータベースにイベントを2回追加するときです。偉大ではない!

これにより、リフレッシュが行われるまで、増加するクリック数が永続的に増加します。また追加された "余分な"イベントは、 "0000-00-00 00:00:00"を除いてDBに配置されていないので、出力時に正しく表示されます。私は何か簡単なことを逃していますか?私は間違って何をしていますか?

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

select: function(start, end, allDay){ 

    $("popup").show(); 
    $(".title").focus(); 
    var start = Date.parse(start)/1000; 
    var end = Date.parse(end)/1000; 
    var allDay = allDay: 

    $("submitForm").click(function(){ 

    var title = $(".title").val(); 
    var description = $("description").val(); 
    var team_id = <?php echo $id ?>; 

    if(title != "" || title != " "){ 

     $.post("script.php", {...}, function(){ 
     $(".title").val(""); 
     $(".description").val(""); 
     start = ""; 
     end = ""; 
     title = ""; 
     description = ""; 
     team_id = ""; 
     allDay = ""; 
     calendar.fullCalendar('unselect'); 
     calendar.fullCalendar('refetchEvents'); 
     }); 

    }else{ 
     alert("You must enter a title"); 
    } 

    $(".popup").hide(); 

    }); 
} 

}); 
</script> 

これは明らかにJS/Jquery全体ではありませんが、これが重要です。私は何が欠けていますか?前もって感謝します。あなたの助けに感謝します!

+0

あなたは構文エラーがあります。変更が選択:選択で=ライン#ここで2 –

+0

@MartinBorthiryは、ドキュメントがhttp://arshaw.com/fullcalendar/docs/usage/です。これはapiコールバック関数であり、 "="であってはなりません。この関数も実際に動作しますが、何らかの理由でオブジェクトを解放していないだけです。 –

答えて

0

実際に問題を修正するためにランダムセッションIDを追加してから、投稿が完了した後にIDをクリアする必要がありました。

0

あなたのクリックが成功するたびに添付されているようです。成功コールバックの外にコードクリック機能を配置します。

+0

申し訳ありませんが、私はそこにコードの部分を置いていませんでしたが、投稿を編集します。私はすでにdocument.ready内に既にそれを持っています。 –

1
  • ここで、日付を選択すると繰り返しクリックイベントがアタッチされます。あなたの$("popup")document.ready上に存在する場合

    select: function(start, end, allDay){ 
        $("submitForm").click(function(){}); 
    }) 
    

    それでは、添付されて発見されたプラグインはここで

  • フォームを送信する定義の 外に、このコード行を入れて、イベントをクリックし、どんなに場合あなたはクリックイベントをバインドする必要がjQueryのスクリプトの後半で動的に、$("popup")要素を追加した場合

     $(document).ready(function() { 
           $("submitForm").click(function(){}); 
           $('#calendar').fullCalendar({  
             select:select: function(start, end, allDay){}) 
           }) 
         }) 
    
  • 、:なしプロパティ:要素には、ディスプレイを持っていますそのコードを一度しか実行しない場所に置くように注意してください。

+0

まだ私のためにそれをしないでください。前の選択を放棄しません。他のアイデア? –

0

あなたはあなたの成功の機能に次のように使用する必要があります。

    $('#save_button').unbind() 

@ mehul9595ごとにあなたがクリックにバインドされたすべての蓄積されたイベントを削除するように。

ヘルプ:https://stackoverflow.com/a/9688908/2468603