IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Utilisation de Drag and Drop


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut Utilisation de Drag and Drop
    Bonjour à tous,

    Je suis en train de réaliser un module de gestion d'inventaire en Drag and Drop avec JQuery. Malgré de longues lectures de la doc sur UI et de nombreux tests, je n'arrive pas à faire en sorte qu'une variable enregistre correctement ce qu'un slot contient.

    Pour le moment, lorsqu'un item est droppé dans un slot, le contenu du dit-slot est enregistré dans un array (le but étant par après de pouvoir le sauvegarder dans ma base de donnée). Le problème c'est que quand l'item est déplacé d'un slot à un autre, l'enregistrement se fait mal et parfois l'item se retrouve à la fois dans plusieurs slots...

    Ca ne doit pas être bien difficile à régler mais j'avoue que je suis un peu perdu...
    Merci d'avance !

    Je vous invite à tester par vous-même.

    http://corrupt-kingdoms.com/inv/craft0.php

    Voici mon code HTML :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <!--- INVENTAIRE --->
    <table id="INVENTORY" CELLSPACING="0" cellpadding="0">
        <tr>
        <td id="1" class="SLOT"></td>
        <td id="2" class="SLOT"></td>
        <td id="3" class="SLOT"></td>
        <td id="4" class="SLOT"></td>
        </tr>
    </table><br><br><br>
     
    <!--- ITEMS À POSITIONNER --->
    <div id="ITEMS">
        <div id="ITEM_01" class="ITEM"><img src="FOOD_01.png"></div>
        <div id="ITEM_02" class="ITEM"><img src="MEAT_01.png"></div>
    </div><br><br><br>
     
    <!--- DETECTION DU CONTENU DE CHAQUE LOT --->
     
    1 : <span id="INFO_1"></span><br>
    2 : <span id="INFO_2"></span><br>
    3 : <span id="INFO_3"></span><br>
    4 : <span id="INFO_4"></span><br>
     
     
    <!--- IMPORT JQUERY ET UI --->
    <script src="JQ.js"></script>
    <script src="UI.js"></script>

    Et mon code JQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $(document).ready(function(){
    	SLOT = new Array;
    	// SLOT[ID] = item contenu dans le slot id
    	$(".ITEM").draggable({
    		//containment : '.INV_BOX', // containment indique la zone ou l'objet est contraint à se déplacer
    		cursor: "pointer",
    		revert: "invalid",
    		revertDuration: 100,
    		snap: ".SLOT",
    		distance:35, //distance a laquelle ca commence a bouger
    		opacity:0.40,
    	});
    	$(".SLOT").droppable({
    		accept: ".ITEM",
    		tolerance: "fit", //dedans à fond, pas deborder
    	});
    	$( ".SLOT" ).on( "dropout", function( event, ui ){
    	// quand un item sort du slot
    	slot_id = this.id;
    	SLOT[slot_id]=0;
    	$("#INFO_"+slot_id).html("RIEN");
    });
    $( ".SLOT" ).on( "drop", function( event, ui ){
    	// quand un item est droppé dans le slot
    	slot_id = this.id;
    });
    $( ".ITEM" ).on( "dragstop", function( event, ui ){
    	// quand un item s'arrête quelque part
    	item_id = this.id;
    	SLOT[slot_id]=item_id;
    	$("#INFO_"+slot_id).html("Contient : "+item_id);
    });
    });

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2008
    Messages : 49
    Par défaut
    J'ai un peu regardé et j'ai trouvé ca comme solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $(document).ready(function(){
    	SLOT = new Array;
    	var slot_id=-1;
    	var item_pos_ancienne=-1;
    	var item_id='';
    	// SLOT[ID] = item contenu dans le slot id
    	$(".ITEM").draggable({
    		//containment : '.INV_BOX', // containment indique la zone ou l'objet est contraint à se déplacer
    		cursor: "pointer",
    		revert: "invalid",
    		revertDuration: 100,
    		snap: ".SLOT",
    		distance:35, //distance a laquelle ca commence a bouger
    		opacity:0.40
    	});
    	$(".SLOT").droppable({
    		accept: ".ITEM",
    		tolerance: "fit" //dedans à fond, pas deborder
    	});
    	$( ".SLOT" ).on( "drop", function( event, ui ) { // quand un item est droppé dans le slot
    		slot_id = this.id;
    		if(item_pos_ancienne!=-1) SLOT[item_pos_ancienne]=0;
    		SLOT[slot_id]=item_id;
    		$("#INFO_"+slot_id).html("Contient : "+item_id);
    		$("#INFO_"+item_pos_ancienne).html("RIEN");
    	});
    	$( ".ITEM" ).on( "dragstart", function( event, ui ) { // debut déplacement d'un item
    		item_id = this.id;
    		if(SLOT.indexOf(item_id)!=-1) item_pos_ancienne=SLOT.indexOf(item_id);
    	});
    });

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2013
    Messages : 2
    Par défaut
    Et bien franchement, astucieux !
    Merci beaucoup pour ce coup de pouce !

    Sujet résolu donc.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Je viens de poster une nouvelle contribution : jQuery UI, l'élément droppable n'accepte qu'un seul élément draggable.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [Dojo] Comment utiliser les events du drag and drop de dojo
    Par Invité dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 03/07/2012, 23h55
  3. utilisation plugin arbre drag and drop
    Par fabrizti dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/10/2010, 10h03
  4. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo