Bonjour à tous !
J'ai un petit soucis.
En HTML5 et Javascript j’effectue un Drag and Drop d'image. Par exemple, j'essaye de faire un polyvore. L'utilisateur prend l'objet qui lui plait, le glisse et valide à la prochaine étape.
Cependant j'ai quelque lacune, je n'arrive pas à récupérer la valeur de l'image dropé pour la passer ds mon formulaire, et sauvegardé l'image sélectionné durant l'étape.
Mon code de drag and drop, à étais inspiré du tuto qu'il y avait sur le Site du zero, mais avec leur nouvelle version je ne trouve plus l'url !
C'est surement un problème tout bête, mais je bute dessus...
Dans l'attente de vous lire...
Modifié par Gangrene (18 Feb 2013 - 12:06)
J'ai un petit soucis.
En HTML5 et Javascript j’effectue un Drag and Drop d'image. Par exemple, j'essaye de faire un polyvore. L'utilisateur prend l'objet qui lui plait, le glisse et valide à la prochaine étape.
Cependant j'ai quelque lacune, je n'arrive pas à récupérer la valeur de l'image dropé pour la passer ds mon formulaire, et sauvegardé l'image sélectionné durant l'étape.
Mon code de drag and drop, à étais inspiré du tuto qu'il y avait sur le Site du zero, mais avec leur nouvelle version je ne trouve plus l'url !
C'est surement un problème tout bête, mais je bute dessus...
Dans l'attente de vous lire...
<body>
<div id="content">
<form method="????" action="page2.php">
<div id="drag">
<div id="allcup">
<div id="cup" class="dropper">
<img src="images/cup1.png" width="200" height="140" class="draggable" value="1" />
</div>
<div id="cup" class="dropper">
<img src="images/cup2.png" width="200" height="140" class="draggable" value="2" />
</div>
<div id="cup" class="dropper">
<img src="images/cup3.png" width="200" height="140" class="draggable" value="3" />
</div>
<div id="cup" class="dropper">
<img src="images/cup4.png" width="200" height="140" class="draggable" value="4" />
</div>
</div>
<div id="drop" class="dropper" name="drop"></div>
<a href="etape1.php"><input type="button" class="annuler" value=""/></a>
</div>
<input type="submit" value="" class="suivant"/>
</form>
</div>
</body>
<script language="javascript" type="text/javascript">
(function() {
var dndHandler = {
draggedElement: null, // Propriété pointant vers l'élément en cours de déplacement
applyDragEvents: function(element) {
element.draggable = true;
var dndHandler = this; // Cette variable est nécessaire pour que l'événement « dragstart » ci-dessous accède facilement au namespace « dndHandler »
element.addEventListener('dragstart', function(e) {
dndHandler.draggedElement = e.target; // On sauvegarde l'élément en cours de déplacement
e.dataTransfer.setData('text/plain', ''); // Nécessaire pour Firefox
}, false);
},
applyDropEvents: function(dropper) {
dropper.addEventListener('dragover', function(e) {
e.preventDefault(); // On autorise le drop d'éléments
this.className = 'dropper drop_hover'; // Et on applique le style adéquat à notre zone de drop quand un élément la survole
}, false);
dropper.addEventListener('dragleave', function() {
this.className = 'dropper'; // On revient au style de base lorsque l'élément quitte la zone de drop
});
var dndHandler = this; // Cette variable est nécessaire pour que l'événement « drop » ci-dessous accède facilement au namespace « dndHandler »
dropper.addEventListener('drop', function(e) {
var target = e.target,
draggedElement = dndHandler.draggedElement, // Récupération de l'élément concerné
clonedElement = draggedElement.cloneNode(true); // On créé immédiatement le clone de cet élément
while(target.className.indexOf('dropper') == -1) { // Cette boucle permet de remonter jusqu'à la zone de drop parente
target = target.parentNode;
}
target.className = 'dropper'; // Application du style par défaut
clonedElement = target.appendChild(clonedElement); // Ajout de l'élément cloné à la zone de drop actuelle
dndHandler.applyDragEvents(clonedElement); // Nouvelle application des événements qui ont été perdus lors du cloneNode()
draggedElement.parentNode.removeChild(draggedElement); // Suppression de l'élément d'origine
});
}
};
var elements = document.querySelectorAll('.draggable'),
elementsLen = elements.length;
for(var i = 0 ; i < elementsLen ; i++) {
dndHandler.applyDragEvents(elements[i]); // Application des paramètres nécessaires aux éléments déplaçables
}
var droppers = document.querySelectorAll('.dropper'),
droppersLen = droppers.length;
for(var i = 0 ; i < droppersLen ; i++) {
dndHandler.applyDropEvents(droppers[i]); // Application des événements nécessaires aux zones de drop
}
})();
</script>
[/i][/i] Modifié par Gangrene (18 Feb 2013 - 12:06)