JQuery UI Droppable принять условие с формой отправки

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

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

Вот фрагмент кода, с которым у меня возникли проблемы:

$("#taskClosed").droppable({
  accept: function(el) {
    console.info(el.parent().parent().attr("id"));
    if ((el.parent().parent().attr("id") == "wrapper_taskAssigned") &&
      (el.position().left > $("#taskAssigned").width())) {
      if (closeTask(el) == true) return true;
      // need some improvement here
    }
    return false;
  },
  drop: function(event, ui) {
    // will perform drop item
  }
});
// handle the task close event
function closeTask(el) {
  $("#taskcloseForm-header").empty().append("Close task  " + el.data("name"));
  $("#popupCloseTask").popup("open");
}

Я хотел бы иметь возможность переместить задачу 2 в столбец "Закрытая задача", где появится форма для ввода информации. После отправки форма вызовет другую функцию для выполнения Ajax-записи в бэкэнд-контроллере.

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

Заранее спасибо.

1 ответ

Рабочая ДЕМО

Эта функция не была определена closeTask(el),

if ((el.parent().parent().attr("id") == "wrapper_taskAssigned") &&
      (el.position().left > $("#taskAssigned").width())) {
      if (closeTask(el) == true) return true;   // this function was not defined
      // need some improvement here
    }
    return false;

Я удалил его, просто чтобы всплывающее окно работало

Добавьте этот код для отправки формы с использованием ajax и для восстановления перетаскивания в исходное положение при нажатии кнопки отмены

       /** get the original position of draggable**/
    $("li[id='draggable']").data("Left", $("li[id='draggable']").position().left)
        .data("Top", $("li[id='draggable']").position().top);

       /** ajax form submit**/
    $("#closetaskForm-submit-button").click(function () {
        $.ajax({
            url: '/echo/html/',  // change the url 
            data: $('#form').serialize(),
            success: function (data) {
                alert('succes');
            }
        });

    });
             /** restore draggable to original position**/
    $("#closetaskForm-cancel-button").click(function () {
    $("#popupCloseTask").popup("close");
    $("li[id='draggable']").animate(
                { "left": $("li[id='draggable']").data("Left"), 
                    "top": $("li[id='draggable']").data("Top")
                }, "slow");
    });

          /**avoid popup closing on outside popup click**/
$("#popupCloseTask").on({
    popupbeforeposition: function () {
        $('.ui-popup-screen').off();
    }
});

Надеюсь, это поможет, спасибо

Другие вопросы по тегам