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();
}
});
Надеюсь, это поможет, спасибо