Fullcalendar: перетаскиваемый объект отклоняет fullcalendar как удаляемый, хотя fullcalendar допускает удаление

Я настроил FullCalendar для приема перетаскиваний, что он и делает. Но перетаскиваемый объект, который я создал с помощью revert:'invalid', похоже, не распознает даты в FullCalendar как удаляемые и возвращается обратно. Вот мой код:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>

  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title>mydrag</title>
  <script src="fullcalendar-bundle.js" type="text/javascript"></script>
</head><body>
<div id="mydrag" style="width: 200px; height: 100px; background-color: red;">My Drag</div>
<div id="calendar"></div>


<script type="text/javascript">
function onExternalEventDrop(date, allDay) {
    alert("Dropped on " + date + " with allDay=" + allDay);
}

$('#mydrag').each(function() {

    // create an Event Object (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/)
    // it doesn't need to have a start or end
    var eventObject = {
        title: 'MyDrag Title'
    };

    // store the Event Object in the DOM element so we can get to it later
    $(this).data('eventObject', eventObject);

    // make the event draggable using jQuery UI
    $(this).draggable({
        helper: 'clone',
        //revert: 'invalid',
        revert: function(droppableObj) {
            //if false then no socket object drop occurred.
            if(droppableObj === false) {
                //revert the .myselector object by returning true
                alert('Not a droppable object');
                return true;
            }
            else {
                //droppableObj was returned,
                //we can perform additional checks here if we like
                //alert(droppableObj.attr('id')); would work fine
                //return false so that the .myselector object does not revert
                return false;
            }
         },
        revertDuration: 500,  //  original position after the drag
        start: function(e, ui) {
            $(ui.helper).css('width', $(this).css('width'));
        }
    });

});

$('#calendar').fullCalendar({
    aspectRatio: 2.25,
    header: {
        left: '',
        center: 'title',
        right: 'prev,next'
    },
    columnFormat: {
        month: 'dddd'
    },
    droppable: true,
    drop: onExternalEventDrop
});

</script>
</body></html>

Когда я перетаскиваю перетаскиваемый элемент в календарь, элемент возвращается обратно (предполагая, что календарная дата не была распознана как допустимая отбрасываемая)... но обратный вызов отбрасывания равен срабатывает с ожидаемым предупреждением (предполагая, что FullCalendar распознал перетаскиваемый объект как действительный). Я ожидаю, что перетаскиваемый не должен возвращаться назад. Я делаю или ожидаю что-то не так? Я искал все, но не нашел ничего, чтобы объяснить это. Любая помощь будет принята с благодарностью.

Обновление: забыл упомянуть, что я назвал «fullcalendar-bundle.js» файл, содержащий следующее:

  • jquery 1.5.2
  • jquery ui 1.8.11
  • плагин fullcalendar 1.5.2

Еще одно обновление: я только что попробовал версию FullCalendar 1.5.3, но вижу такое же поведение.

10
задан Flavius 2 April 2012 в 18:38
поделиться