FullCalendar:如何停止拖动自定义事件?

时间:2010-10-22 22:19:54

标签: jquery fullcalendar

有人可以告诉我如何停止拖动/调整event.id > 100的事件的大小?只有那些事件应该是不可拖动的。

更新了代码示例:

eventRender: function(event, element) {
    if (event.id > 100) {
        event.disableDragging();
        event.disableResizing();
    }

    element.qtip({
        content: GetEventToolTip(event),
        position: { corner: { tooltip: 'bottomLeft', target: 'topMiddle'} },
        style: {
            border: {
                width: 1,
                radius: 5
            },
            padding: 5,
            textAlign: 'left',
            tip: false,
            name: event.iscustom == 'True' ? 'cream' : 'dark'
        }
    });
}

感谢。

12 个答案:

答案 0 :(得分:12)

eventRender: function(event, element) {
    if (event.id.indexOf("IDENTIFYING_STRING") == -1) 
    {
        event.editable = false;
    }                       
}

答案 1 :(得分:4)

从1.4.8开始,在fullcalendar中定义的disableDraggingdisableResizing都不是函数。我确信世界上有2个人没有尝试过第一个建议:)但是,你需要点击jQuery UI对象本身来禁用在事件级别的拖动或调整大小。所以(而不是尝试使用不存在的函数)在eventRender(event, element)回调中尝试这个:

if (event.id > 100) {

    element.draggable = false;

}

请注意,我只是在jQuery元素本身上设置属性,因为它与UI的可拖动行为有关。

同样适用于可调整大小的EXCEPT,你需要删除fullcalendar附加的div(class = ui-resizable-handle ui-resizable-s),方法是用jquery选择器识别它并删除它(只需确保为每个事件设置一个唯一的className)在yoru事件数组中,您可以在DOM中轻松识别它。请请求fullcalendar开发人员向Event对象添加disableDraggingdisableResizing属性。只需不到一分钟的时间就可以向源添加支持。

答案 2 :(得分:3)

这对我来说很完美:

if ( event.id > 100 ) {
  element.draggable = false;
  element.resizable = false;
}

答案 3 :(得分:3)

这是最好的解决方案:

$('#calendar').fullCalendar({
    disableDragging = true
});

答案 4 :(得分:2)

我会说:

if(event.id > 100)
{
   event.disableDragging();
   event.disableResizing();
}

答案 5 :(得分:2)

FullCalendar v1.6.4

eventRender: function(jsEvent, element) {

 if(jsEvent.id > 100) {

    jsEvent.startEditable    = false;
    jsEvent.durationEditable = false;
  }

  return element;             
}

这个解决方案对我来说就像一个魅力。

我使用Ruby Gem" Fullcalendar_engine"实现了这个JS库。

答案 6 :(得分:0)

你必须破解fullcalendar.js

取消注释行

t.isEventDraggable = isEventDraggable;
t.isEventResizable = isEventResizable;

替换功能:

function isEventDraggable(event) {
         return isEventEditable(event) && !opt('disableDragging') &&
            !event.disableDragging;
}


function isEventResizable(event) { // but also need to make sure the seg.isEnd == true
         return isEventEditable(event) && !opt('disableResizing') &&
            !event.disableResizing; 
}

现在您可以根据需要为每个事件启用/禁用调整大小和拖动。

答案 7 :(得分:0)

我没有成功使用此处显示的方法。我最终黑客攻击fullcalendar.js为事件添加noDragging选项,这实际上非常简单:

原:

function isEventDraggable(event) {
    return isEventEditable(event) && !opt('disableDragging');
}

将其更改为:

function isEventDraggable(event) {
    return isEventEditable(event) && !opt('disableDragging') && !event.noDragging;
}

刚刚添加了event.noDragging的支票。

答案 8 :(得分:0)

element.draggable = falseevent.ediable = false都不适合我。必须是因为FullCalendar的更新版本。如果这也是你的情况,请尝试:

if ( event.id > 100 ) {
    event.startEditable = false;
}

为我工作。

或者你可以在放弃后取消移动事件:

eventDrop: function (event, delta, revertFunc) {

            if (event.id < 100) 
                revertFunc();
        }

答案 9 :(得分:0)

在editable中只写false,它不能拖放                 editable:false

答案 10 :(得分:-2)

在创建fullcalendar时使用这些标记以禁用拖动或调整大小。

**>  $('#calendar').fullCalendar({
> 
>    editable: false,
> 
> //the rest of your code... }**

答案 11 :(得分:-4)

在创建fullcalendar时使用这些标记以禁用拖动或调整大小。 arshaw文档不是很解释,但这是如何解释它们。

 $('#calendar').fullCalendar({
    disableResizing:true,
    disableDragging:true,

    //the rest of your code...

disableDragging :布尔值,默认false     即使事件可编辑,也会禁用所有事件拖动。

disableResizing :布尔值,默认false     即使事件可编辑,也会禁用所有事件大小调整。