使用url拖动事件始终遵循删除后的URL

时间:2012-10-12 12:15:48

标签: jquery fullcalendar

我在拖动与网址相关联的事件时遇到了一些麻烦。

如果您尝试这样做,您会看到事件正确移动,但也会触发click事件,因此您将访问链接的网址(这很糟糕)。

我试着玩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;
    });
},

但仍然没有运气。我认为在拖动时会创建一个新元素,因此每个自定义值都会被删除......

有什么想法吗?

1 个答案:

答案 0 :(得分: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;
      }
},

你已经完成了!