2012-10-12 18 views
1

我在拖動一個帶有url的事件時遇到了一些麻煩。使用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; 
    }); 
}, 

但仍沒有運氣。我認爲,雖然拖動,創建一個新的元素,所以每個自定義值都被刪除...

任何想法?

回答

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; 
     } 
}, 

大功告成!

+0

我有同樣的問題。您的解決方案奏效謝謝! – Steve