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

JavaScript Discussion :

Supprimer une image par key event


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 84
    Points : 49
    Points
    49
    Par défaut Supprimer une image par key event
    Bonjour à tous,

    Je me tourne vers vous car après de multiples recherches sur le forum et sur internet, je ne trouve pas de solutions à mon problème.

    Voici le tableau, j'ai une page sur laquelle l'utilisateur peut drag and dropper des images d'un div vers l'autre. La partie drag and drop fonctionne très bien, je me suis inspiré de l'exemple du site W3Schools.com.

    Je voudrais, suite à l'ajout d'une image dans le div cible, pouvoir sélectionner l'image et la supprimer en faisant "suppr" sur le clavier. C'est là que j'ai besoin de vous.

    J'arrive à donner le focus à mon image en la sélectionnant mais pas à récupérer les key event. Et je ne comprends pas pourquoi.

    voici le code que j'utilise pour créer les images dans le div cible.

    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
     
    function drop(ev)
    {
    	ev.preventDefault();
     
    	var x= ev.pageX;
    	var y= ev.pageY;
     
    	var id=ev.dataTransfer.getData("id");
            //repositionnement dans le div cible
    	if (id != null && id != ""){
    		var img = document.getElementById(id);
    		img.style.top = y +'px';
    		img.style.left = x+'px';
    	}else{
                    //creation suite au drag and drop depuis le div source
    		var imgSrc = ev.dataTransfer.getData("src");
    		var newImage = "<img id=\"img"+ imgCpt++ +"\" src="+imgSrc+" width=150 height=150 style=\" position:absolute; top:"+y+"px; left:"+x+"px;\" alt=\"no image available\" 
    draggable=\"true\" ondragstart=\"drag(event)\" keydown=\"deleteImg(event)\" onclick=\"this.focus()\" focusable =\"true\" />";
     
    		var dropZone = ev.target;
    		$(dropZone ).append(newImage);
     
    	}
    }
    Je ne rentre jamais dans ma fonction deleteImg, et je vois vraiment pas pourquoi.

    J'espère qu'un œil nouveau et plus expérimenté que moi trouvera la solution.

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    ondragstart
    onclick
    keydown

    Quel est l'intrus ?

    onkeydown

    Pour rendre le code plus propre, remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var newImage = "<img id=\"img"+ imgCpt++ +"\" src="+imgSrc+" width=150 height=150 style=\" position:absolute; top:"+y+"px; left:"+x+"px;\" alt=\"no image available\" 
    draggable=\"true\" ondragstart=\"drag(event)\" keydown=\"deleteImg(event)\" onclick=\"this.focus()\" focusable =\"true\" />";
    par :

    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
    var newImage = $("<img/>")
    .attr({
      id: "img" + (imgCpt++),
      src: imgSrc,
      alt : "no image available",
      draggable: "true",
      focusable: "true"
    })
    .css({
       width: "150px",
       height: "150px",
       position: "absolute",
       top: y+"px",
       left: x+"px"
    })
    .on('dragstart', drag)
    .on('keydown', deleteImg)
    .on('click', function(){ this.focus(); });
    quand même plus lisible

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    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
    var newImage = $("<img/>")
    .attr({
      id: "img" + (imgCpt++),
      src: imgSrc,
      alt : "no image available",
      draggable: "true",
      focusable: "true"
    })
    .css({
       width: "150px",
       height: "150px",
       position: "absolute",
       top: y+"px",
       left: x+"px"
    })
    Bof bof...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $('<img>', {
      id: "img" + (imgCpt++),
      src: imgSrc,
      alt : "no image available",
      draggable: "true",
      focusable: "true",
      css: {
        width: "150px",
        height: "150px",
        position: "absolute",
        top: y+"px",
        left: x+"px"
      }
    })

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Bonjour,
    je rajouterais que tant qu'à utiliser jQuery autant l'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var img = document.getElementById(id);
    img.style.top = y +'px';
    img.style.left = x+'px';
    ça fait moyen entre autre

Discussions similaires

  1. [débutant]Placer une image par dessus une autre
    Par sempire dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/11/2005, 18h42
  2. Transfert d'une image par socket stream
    Par francky23012301 dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2005, 16h06
  3. [MySQL] Comment afficher une image par défaut ?
    Par clicman dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/10/2005, 08h46
  4. Modifier une image par pixels
    Par mateo.14 dans le forum MFC
    Réponses: 10
    Dernier message: 21/01/2005, 15h09
  5. [FLASH MX] Envoyer une image par e-mail
    Par skyjoe dans le forum Flash
    Réponses: 2
    Dernier message: 22/10/2004, 18h11

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