38 votes

jQuery drag and drop - vérification d'un dépôt en dehors d'un droppable

Je m'excuse si cette question a déjà été traitée dans une autre question, je n'ai pas trouvé de réponse spécifique à mon problème !

J'essaie de tester si un draggable jQuery est déposé en dehors d'un droppable légal. Ce problème serait normalement résolu dans 90 % des cas en inversant le draggable, mais je ne veux pas le faire. Au lieu de cela, je veux faire une chose si le draggable est déposé sur un droppable (ce qui fonctionne très bien !), et autre chose s'il est déposé en dehors de tous les droppables possibles (ce qui me perturbe actuellement !).

En un mot :

jQuery('#droppable').droppable(
{
    accept: '#draggable',
    drop: function(event, ui)
    {
        // awesome code that works and handles successful drops...
    }
});

jQuery('#draggable').draggable(
{
    revert: false,
    stop: function()
    {
        // need some way to check to see if this draggable has been dropped
        // successfully or not on an appropriate droppable...
        // I wish I could comment out my headache here like this too...
    }
});

J'ai l'impression de rater quelque chose de vraiment évident... Merci d'avance pour toute aide !

0voto

Chris Ostmo Points 1172

Une ancienne question et d'anciennes réponses signifient qu'il s'agit "peut-être" d'une nouvelle solution. Vous vouliez (peut-être) aussi, comme le dit la question, savoir SI un draggable a été déposé en dehors d'un droppable. Pour moi, dans au moins 95 % des cas, je ne me soucie pas vraiment de savoir SI, je veux juste que les choses reviennent à leur état initial sans qu'aucune modification ne soit apportée QUAND cela se produit.

Réglage de revert à la chaîne de caractères invalid permet d'obtenir le comportement souhaité sans code supplémentaire et sans avoir à faire des choses funky.

$( '#draggable' ).draggable({
    revert: "invalid",
    stop: function( event, ui )
    {
       // whatever
    }
});

Encore une fois, il ne vous dira pas "s'il a été déposé en dehors d'un droppable", mais il reviendra à l'état initial si cela se produit.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X