我在拖动与网址相关联的事件时遇到了一些麻烦。
如果您尝试这样做,您会看到事件正确移动,但也会触发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;
});
},
但仍然没有运气。我认为在拖动时会创建一个新元素,因此每个自定义值都会被删除......
有什么想法吗?
答案 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;
}
},
你已经完成了!