1

URLが関連付けられたイベントをドラッグしているときに問題が発生しました。

これを実行しようとすると、イベントが正しく移動することがわかりますが、クリックイベントも発生するため、リンクされたURLにアクセスします(これは悪いことです)。

eventClickコールバックをいじってみましたが、うまくいきませんでした。
ここに私のコードがあります:

// calendar setup
eventDragStart : function(event, jsEvent, ui, view){
    event.dragging = true;
},
eventDragStop : function(event, jsEvent, ui, view){
    event.dragging = false;
},
eventClick : function(event, jsEvent, view){
    //even if I try to return always false, the link is still active
    if(event.dragging === true) return false;
},

次に、イベントリンクを操作しようとしました。

eventRender : function(event, element, view){
    $('a').click(function(){
    // custom function that checks if the event is being dragged or not
    //return dragCheck(event);
    return false;
    });
},

しかし、それでも運はありません。ドラッグ中に新しい要素が作成されるので、すべてのカスタム値が消去されると思います...

何か案は?

4

1 に答える 1

2

-ドクター、お腹を殴るときは気分が悪い
-だから、殴らないで!

以前のモットーに従って解決策を見つけました。
元のプロパティを使用する代わりに、url別のプロパティを作成しましたcustom_url
これにより、fullcalendarがa要素を作成できなくなるため、問題は解消されます。

ここに私のコードがあります。

イベントをフェッチするためのサーバー側コード:

foreach($this->items as $row)
{
    $event = array();
    $event['id']         = $row->id_calendars;
    $event['title']      = $row->cal_title;
    $event['start']      = $row->cal_start;
    $event['end']        = $row->cal_end;
    $event['allDay']     = (bool) $row->cal_all_day;
    $event['custom_url'] = $row->url;

    $events[] = $event;
}

echo json_encode($events);

次に、javascriptの部分:

eventDragStart : function(event, jsEvent, ui, view){
      event.dragging = true;
},
eventDragStop : function(event, jsEvent, ui, view){
      event.dragging = false;
},
eventClick : function(event, jsEvent, view){
      if(event.dragging === true) return false;

      if(event.custom_url){
            window.location = event.custom_url;
      }
},

そして、あなたは完了です!

于 2012-10-12T12:51:46.990 に答える