Fullcalendar - удалить событие, перетащив на сенсорное устройство

1

У меня проблема с Fullcalendar 3.9.0.

eventDragStop: function (event, jsEvent, ui, view) {
         if (isElemOverDiv()) {
             var con = confirm('Are you sure?');
             if (con == true) {
                 $.ajax({
                     url: 'process.php',
                     data: 'type=remove&eventid=' + event.id,
                     type: 'POST',
                     dataType: 'json',
                     success: function (response) {
                         console.log(response);
                         if (response.status == 'success') {

$('#calendar').fullCalendar('removeEvents');
                                 getFreshEvents();
                             }
                         },
                         error: function (e) {
                             alert('Error processing your request: ' + e.responseText);
                         }
                     });
                 }
             }
         }

function isElemOverDiv() {
     var trashEl = jQuery('#external-events');

     var ofs = trashEl.offset();

     var x1 = ofs.left;
     var x2 = ofs.left + trashEl.outerWidth(true);
     var y1 = ofs.top;
     var y2 = ofs.top + trashEl.outerHeight(true);

     if (currentMousePos.x >= x1 && currentMousePos.x <= x2 &&
                            currentMousePos.y >= y1 && currentMousePos.y <= y2) {
         return true;
     }
     return false;
 }

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

Я могу перетащить событие просто отлично, но переместить его в корзину и отпустить не получится. Однако, если я перетащил его в корзину, отпустите и сразу нажмите на мусор, событие будет удалено.

Теги:
fullcalendar-3
touch
draggable

1 ответ

0

Я не знаю вашу переменную "currentMousePos". Но если я не ошибаюсь, у меня есть идея для вашей проблемы. В html5 вы не можете получить позицию для сенсорного устройства по jsEvent.pageX. Одна из идей - использовать jsEvent.changedTouches[0].clientX. Это позиция последнего пальца, который вы покинули экран.

var currentMousePos = new Object();
if (jsEvent.type === 'touchend') {
    currentMousePos.x = jsEvent.changedTouches[0].clientX;
    currentMousePos.y = jsEvent.changedTouches[0].clientY;
} else {
    currentMousePos.x = jsEvent.pageX;
    currentMousePos.y = jsEvent.pageY;
}

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню