Alisteroid | ethan94 a écrit :
J'essaie de réaliser un petit exercice en javascript qui consiste à déplacer une image dans 4 cases, au choix (et optionnellement, de garder la position de l'image même après rechargement de la page). Pour cela, j'ai choisi le framework scriptaculous qui semble être assez efficace sourire.gif J'ai lu la documentation sur le wiki du site officiel mais malgré celà, j'ai quelques problèmes. Pour commencer, quel que soit le nombre de cases que je crée, lorsque je glisse l'image dans la première, elle se fige et je ne peux plus la déplacer, alors que pour les autres, ça fonctionne normalement. Ensuite, j'aimerais utiliser l'option {revert: "failure"} qui est censée faire revenir l'image à son point de départ si je ne la lâche pas dans une zone droppable or elle ne semble pas être reconnue dans mon code. Si je l'utilise, je n'ai plus la possibilité de déplacer mon image où que ce soit Si quelqu'un a déjà utilisé ce framework et aurait une solution, je le remercie par avance ma page test: http://pixlmylife.e3b.org/javascript/index2.html
|
Perso je fais du drag & drop d'éléments entre 2 zones : Code :
function valideGif(value, draggable, dropable) { var url = baseurl+'gifs/update/?format=json'; var result = new Ajax.Request( url, { method:'get' , parameters:{ 'id':draggable.id , 'valid':value }, onSuccess: function(response) { var responseObject = eval('(' + response.responseText + ')'); message( responseObject.message); } } ); } function makedragablegifs() { makedragdropgif('images', 'imagesnonvalides'); // Config de drag&drop de la premiere à la deuxieme zone makedragdropgif('imagesnonvalides', 'images');//Config de drag&drop de la deuxieme à la premiere zone } function makedragdropgif(id_dropable, id_dragable ) { //Pour tous les elements se trouvant dans la zone dragable $A($(id_dragable).getElementsByTagName('div')).each( function(item) { new Draggable( item, { revert: true, ghosting: true } ); } ); Droppables.add( id_dropable, { hoverclass: 'hoverActive', onDrop: movegif } ); // Set drop area by default non cleared. $(id_dropable).cleared = false; } //Fonction appellee au drop -> on enregistre en base dans quelle zone est placée l'element function movegif(draggable,droparea){ if(droparea.id == 'imagesnonvalides') { result2 = 0; } else { result2 = 1; } valideGif(result2,draggable, droparea); draggable.parentNode.removeChild(draggable); droparea.appendChild(draggable); } Event.observe(window, 'load', makedragablegifs, false);
|
A toi d'adapter cela à 3 zones voir plus, le mieux est de créer un script js indépendant du nb de zones en fournissant juste un tableau contenant les id des zones à ton script , ça demande un peu de réflexion mais c'est pas difficile...
Message édité par Alisteroid le 19-11-2008 à 12:01:05
|