FullCalendar: как остановить перетаскивание пользовательских событий? - PullRequest
6 голосов
/ 23 октября 2010

Кто-нибудь может сказать мне, как перестать перетаскивать / изменять размеры событий, где 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 ]

12 голосов
/ 26 мая 2011
eventRender: function(event, element) {
    if (event.id.indexOf("IDENTIFYING_STRING") == -1) 
    {
        event.editable = false;
    }                       
}
4 голосов
/ 08 ноября 2010

Ни disableDragging, ни disableResizing не являются функциями , определенными в полном календаре на 1.4.8. Я уверен, что 2 человека в мире не попробовали первое предложение :) Тем не менее, вам нужно будет подключиться к самому объекту пользовательского интерфейса jQuery, чтобы отключить перетаскивание или изменение размера на уровне события. Поэтому (вместо того, чтобы пытаться использовать несуществующие функции) попробуйте это в вашем eventRender(event, element) обратном вызове:

if (event.id > 100) {

    element.draggable = false;

}

Обратите внимание, что я просто устанавливаю свойство для самого элемента jQuery, поскольку оно относится к перетаскиваемому поведению пользовательского интерфейса.

То же самое касается изменяемого размера, ИСКЛЮЧИТЬ, что вам нужно будет удалить div (class = ui-resizable-handle ui-resizable-s), который добавляется fullcalendar, идентифицируя его с помощью селектора jquery и удаляя его (просто убедитесь, что вы установили уникальное className для события в yoru массив событий, так что вы можете легко определить его в DOM). Пожалуйста, попросите разработчика (ов) fullcalendar добавить свойства disableDragging и disableResizing к объекту Event. Для добавления поддержки источника в источник требуется меньше минуты.

3 голосов
/ 24 ноября 2014

Это лучшее решение:

$('#calendar').fullCalendar({
    disableDragging = true
});
3 голосов
/ 15 января 2011

Это сработало идеально для меня:

if ( event.id > 100 ) {
  element.draggable = false;
  element.resizable = false;
}
2 голосов
/ 17 октября 2015

FullCalendar v1.6.4

eventRender: function(jsEvent, element) {

 if(jsEvent.id > 100) {

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

  return element;             
}

Это решение работает для меня как чудо.

Я реализовал эту библиотеку JSRuby Gem "Fullcalendar_engine".

2 голосов
/ 23 октября 2010

я бы сказал:

if(event.id > 100)
{
   event.disableDragging();
   event.disableResizing();
}
0 голосов
/ 05 декабря 2016

в редактируемом виде, просто напишите false, и редактирование невозможно будет перетащить: false

0 голосов
/ 29 октября 2014

Ни element.draggable = false, ни event.ediable = false у меня не работали. Это должно быть из-за более новой версии FullCalendar. Если это ваш случай, попробуйте:

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

работал для меня.

В качестве альтернативы вы можете отменить событие перемещения после сброса:

eventDrop: function (event, delta, revertFunc) {

            if (event.id < 100) 
                revertFunc();
        }
0 голосов
/ 30 января 2014

Используйте эти теги при создании полного календаря, чтобы отключить перетаскивание или изменение размера.

**>  $('#calendar').fullCalendar({
> 
>    editable: false,
> 
> //the rest of your code... }**
0 голосов
/ 27 сентября 2013

У меня не было успеха с методами, показанными здесь. В итоге я взломал fullcalendar.js, чтобы добавить опцию noDragging для событий, что на самом деле было чрезвычайно просто:

оригинал:

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

изменил его на:

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

Только что добавил чек на event.noDragging.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...