Как это остановить?Использование диалога перетаскивания полного календаря + jquery ui (в котором есть перетаскивание) - PullRequest
1 голос
/ 23 июля 2011

Я использую полный календарь с диалоговым окном jquery ui.

Так что в основном это то, что происходит. У меня есть некоторые перетаскиваемые события, которые пользователь может перетащить в свой календарь. Находясь в календаре, они могут щелкнуть это событие, чтобы загрузить диалоговое окно для редактирования.

Это диалоговое окно jquery с пользовательским интерфейсом, которое также можно перетаскивать. Теперь я обнаружил, что если я переместу диалоговое окно jquery (это диалоговое окно прямо над календарем), оно попытается подключиться к календарю. Когда это происходит, у меня есть запрос ajax, который запускается, чтобы сохранить место, где произошло перетаскиваемое событие.

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

есть идеи как это остановить?

Вот пример файла, который я изменил, чтобы показать, что происходит.

http://jsfiddle.net/Jaybles/dmqXv/

перетащите диалоговое окно на календарь.

Ответы [ 2 ]

1 голос
/ 06 августа 2014

К сожалению, решение Джона не предотвращает перетаскивание диалога jquery в календарь. Лучшее и более простое решение - использовать опцию FullCalendar «dropAccept».

Как показано в примере FullCalendar «Удаление внешних элементов», FullCalendar рассматривает события в перетаскиваемом окне событий, а также любой открытый диалог jquery как внешнее событие.

Убедившись, что только ваши внешние события в перетаскиваемом окне событий помечены таким классом, как «.external-event», и добавив опцию «dropAccept» с именем класса «.external-event» к инициализации FullCalendar опция перетаскивания FullCalendar не будет срабатывать при перетаскивании диалогового окна открытия jquery.

$('#calendar').fullCalendar({
dropAccept: '.external-event',
drop: function() {
}
});

Конечно, вы должны убедиться, что вы не помечаете диалог jquery тем же именем класса.

На события, уже внесенные в календарь, это не влияет, поскольку они не считаются внешними событиями.

0 голосов
/ 15 февраля 2014

Я знаю, что это старый, но у меня тоже был этот вопрос (за исключением того, что мой просто удалялся с экрана), потому что я использовал этот же код из полного календаря, который удаляет события для вас.По сути, вам просто нужно обернуть свой отбрасываемый код в оператор if, чтобы он выполнялся только для определенных вещей.Да, я знаю, что это очень просто, но по какой-то причине я подумал, что функция удаления убрала элемент this с экрана, но это не тот код, который был в комплекте с этим полным календарем, хотя, и это было уловкой для меня.

drop: function(date, allDay) { // this function is called when something is dropped
    if($(this).hasClass("external-event")) {
        // add all existing drop code here
    }
}

Это должно помешать календарю использовать перетаскиваемый мод jquery ui и все остальные перетаскиваемые объекты, кроме класса с внешним событием класса.

...