我在拖动带有 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;
});
},
但仍然没有运气。我认为在拖动时会创建一个新元素,因此每个自定义值都会被清除......
有什么想法吗?
- 医生,当我打我的肚子时,我感觉很糟糕
- 所以,不要打它!
我按照之前的座右铭找到了解决方案。
我没有使用原始的url
属性,而是创建了另一个custom_url
。
这将阻止完整日历创建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;
}
},
大功告成!