dafi dafi - 6 months ago 40
jQuery Question

JQuery UI sortable: restore position based on some condition

I call

sortable.stop()
to make an ajax call to store some data after drag & drop operation.

When the ajax call returns an error (application logic error or net problem) I want to move the dragged element to its original/start position, how can I achieve it?

The scenario should be


  1. user drags A to B

  2. the
    sortable.stop()
    event is called, it triggers an ajax call

  3. the ajax call returns an error

  4. inside the
    stop()
    event we get the ajax error

  5. move A to its original position

  6. user again move A to B

  7. everything is ok

  8. A remains in its new position in B



Steps 6-8 are shown to clarify a successive drag can be done and previous error must be forgotten.

Answer

Have a look at .sortable('cancel'); something like this:

var list = $('#some-list')
list.sortable(
{
    // Some options.
    stop: function()
    {
        $.post('some-url', someData, function()
        {
            if (somethingWentWrong)
            {
                list.sortable('cancel');
            }
        });
    }
});