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 :

Créer une div draggable et contentEditable


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Créer une div draggable et contentEditable
    Bonjour à tous,

    Bonne année 2012.

    J'ai besoin d'aide étant debutant en javascript, j'aimerais créer dynamiquement une div qui soit draggable et contentEditable.

    J'arrive à creer une div mais n'est pas editable ni draggable, je n'utilise pas les plug in de jquery.

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function creer() {
    maDiv = document.createElement("div");
    maDiv.id = 'boxA';
    maDiv.draggable = 'true';
    maDiv.ondragstart = 'return dragStart(event)';
    document.body.appendChild(maDiv);
     
    monP = document.creatElement ("p");
    monP.id = 'ptext';
    monP.contentEditable = 'true';
    maDiv.monP.innerHTML = 'Ceci est le contenu du P'; //Peut contenir de l'html
    document.getElementById(maDiv).append(monP);
    //document.body.maDiv.appendChild(monP);
     }
    Merci par avance pour votre aide.
    Si il n'y a pas solution, je me contenterai d'une en jquery... merci.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDiv.ondragstart = 'return dragStart(event)';
    ondragstart ? dragStart ? Ou sont-ils définis ?

  3. #3
    Inactif  

    Homme Profil pro
    développeur Vala
    Inscrit en
    Février 2011
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : développeur Vala
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 478
    Points : 3 700
    Points
    3 700
    Par défaut
    bonjour Vortexia.
    ne t'avais-je pas donné les explications il y a peu de temps sur le Chat ?

    N.B : ne mélangeons pas jQuery et javascript

  4. #4
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Mes definitions
    Oui j'ai oublié de posté le code ou je définis les autres fonctions:

    Javascript:

    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
    function dragStart(ev) {
       ev.dataTransfer.effectAllowed='move';
       ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
       ev.dataTransfer.setDragImage(ev.target,0,0);
       return true;
    }
    function dragEnter(ev) {
       event.preventDefault();
       return true;
    }
    function dragOver(ev) {
        return false;
    }
    function dragDrop(ev) {
       var src = ev.dataTransfer.getData("Text");
       ev.target.appendChild(document.getElementById(src));
       ev.stopPropagation();
       return false;
    }
    Html:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="editer" type="button" class="p1" dir="ltr" lang="fr" onClick="creer()" value="editer">

    Merci de m'éclaircir ma lanterne, je suis vraiment dans l'ombre.

    Oui exacte Rotre, tu m'as expliqué sur le chat mais je n'arrive pas à faire fonctionner mes deux propriétés dragndrop et contenteditable en meme temps dans une creation dynamique de div sur clik d'un bouton.

    Quel est la différence entre jquery et javascrit ? Désolé je débute.

    Merci de vos réponses.

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par RomainVALERI Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDiv.ondragstart = 'return dragStart(event)';
    ondragstart ? dragStart ? Ou sont-ils définis ?
    A mon avis il a voulu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maDiv.ondragstart = new Function('return dragStart(event)');

  6. #6
    Invité
    Invité(e)
    Par défaut
    et il me semble que au lieux de mettre

    c'est plutot

    et pour ie < 9


  7. #7
    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
    Citation Envoyé par RomainVALERI
    ondragstart ? dragStart ? Ou sont-ils définis ?
    ondragstart est un événement du DOM

  8. #8
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Bovino Voir le message
    ondragstart est un événement du DOM
    Tu as raison
    On l'a ici.
    Mes références datent parfois un peu.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Salut à tous,

    J'ai essayé vos suggestions willpower et Mekal, rien ne fonctionne, la div est bien créer à l'appui du bouton mais sans la proprité Dragndrop ou contentEditable.

    Pourtant quand je crée la div en dur sur le htlm ça marche:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="boxC" draggable="true" ondragstart="return dragStart(event)" >
       <p id="ptext" contentEditable="true"> . </p>
    </div>

    Voici le code complet de la page si quelqu'un pouvait me debloquer la situation:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    <!DOCTYPE HTML>
    <html>
    <meta http-equiv="Content-Style-Type" content="text/css">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <script type="text/javascript" src="Draggable.js"></script>
     
    <style type="text/css">
     
     
    #boxA, #boxB, #boxC {
       float:left;padding:10px;margin:10px;-moz-user-select:none;
    }
     
    #boxA { border: 1px solid #CCC;
                    border-radius: 20px;
            width: 200px;
            height: 50px;
            float: right;
            margin: 10px;
                    /*background: url("images/papier.png")*/;
                     }
    #boxB { border: 1px solid #CCC;
            width: 250px;
            height: 400px;
            float: left;
            margin: 10px; }
    #boxC { border: 1px solid #CCC;
                    border-radius: 20px;    
            width: 200px;
            height: 50px;
            float: right;
            margin: 10px;
                    position: relative;
                    /*background: url("images/papier.png");*/               }
    #ptext { position: relative;
                    margin-top: 0px;
                    margin-right: 180px;
                    margin-bottom: 0px;
                    margin-left: 0px;}
    </style>
     
    <script>
     
     
    function dragStart(ev) {
       ev.dataTransfer.effectAllowed='move';
       ev.dataTransfer.setData("Text", ev.target.getAttribute('id'));
       ev.dataTransfer.setDragImage(ev.target,0,0);
       return true;
    }
    function dragEnter(ev) {
       event.preventDefault();
       return true;
    }
    function dragOver(ev) {
        return false;
    }
    function dragDrop(ev) {
       var src = ev.dataTransfer.getData("Text");
       ev.target.appendChild(document.getElementById(src));
       ev.stopPropagation();
       return false;
    }
     
    </script>
    <script>
    function creer() {
    maDiv = document.createElement("div");
    maDiv.id = 'boxA';
    maDiv.class = 'sample';
    //maDiv.contentEditable = 'true';
    maDiv.draggable = 'true';
    maDiv.ondragstart = new Function('return dragStart(event)');
    //maDiv.ondragStart = 'return dragStart(event)';
     
    document.body.appendChild(maDiv);
     
    monP = document.creatElement ("p");
    monP.id = 'ptext';
    monP.contentEditable = 'true';
    maDiv.monP.innerHTML = 'Ceci est le contenu du P'; //Peut contenir de l'html
    //maDiv.onclick = function(){alert('click !');}; //Évènement ayant lieu lors du click sur la div
    document.getElementById(maDiv).append(monP);
    //document.body.maDiv.appendChild(monP);
     }
    function clone(){i = i +1;
    var e = $("<div id='box_"+i+"'></div>").appendTo("#boxB");
     
    $("#boxd").clone().prependTo(e);}
     
    </script>
    </head>
     
    <body>
     
    <center>
    <h2>Drag and drop HTML5 demo</h2>
    <div>Try to move the div to the dustin div</div>
     
     
    <div id="boxC" draggable="true" ondragstart="return dragStart(event)" >
       <p id="ptext" contentEditable="true"> . </p>
    </div>
    <input name="adhérer" type="button" class="p1" dir="ltr" lang="fr" onClick="creer()" value="Ma page">
    <div id="boxB" ondragenter="return dragEnter(event)" ondrop="return dragDrop(event)" 
         ondragover="return dragOver(event)">Dustbin</div>
     
    </center> 
    </body>
    </html>
    Merci de vos réponses encore une fois, on le dira jamais assez

  10. #10
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Vortexia Voir le message
    on le dira jamais assez
    Y'a d'autres trucs qu'on ne dira jamais assez... genre ne pas oublier les balises code autour des extraits ? ^^


  11. #11
    Invité
    Invité(e)
    Par défaut
    le script cree est remplis d'erreur

    essai comme ca

    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
     
    function creer() {
     
    if(typeof this.compteur_id == 'undefined'){
    		this.compteur_id = 0;
    	}
    this.compteur_id++
     
    maDiv = document.createElement("div");
    maDiv.id = 'box'+this.compteur_id;
     
    maDiv.setAttribute('class','boxA');
     
    maDiv.draggable = 'true';
    maDiv.addEventListener('dragstart',dragStart, false);
     
    maDiv.addEventListener('drop',dragDrop, false);
    monP = document.createElement("p");
    monP.id = 'ptext';
    monP.contentEditable = 'true';
    monP.innerHTML = 'Ceci est le contenu du P'; //Peut contenir de l'html
     
    maDiv.appendChild(monP);
     
    document.body.appendChild(maDiv);
     
     
    }
    et modifie le css afin de mettre une class boxA plutot qu'un id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    .boxA, #boxB, #boxC {
    float:left;padding:10px;margin:10px;-moz-user-select:none;
    }
     
    .boxA {
    border: 1px solid #CCC;
    border-radius: 20px;
    width: 200px;
    height: 50px;
    float: right;
    margin: 10px;
    /*background: url("images/papier.png")*/;
    }
    ps : utilise la balise code pour inseré du code ca sera plus lisible

  12. #12
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Merci Mekal IT WORKS

    Encore merci on le dira jamais assez

    J'en prends de la graine, je n'oublierais pas les balises code la prochaine fois, je suis new....c'est donc ça ^^ les balises codes si je comprends bien, j'ai vu aussi ça code /code .

    Un petit commentaire sur mes erreurs et tes modifs couronnerais ce post de 5 etoiles et deviendrai un veritable tuto ou reference pour d'autres.
    Bon j'exagéres peut être, mais ça serais bien.

    En attendant je court le marquer comme resolu.

    MERCI à TOUS. Vous me reverrez surement bientot

  13. #13
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Encore moi, je vous avez dis que je reviendrais.
    juste pour suggérer à quiconque voudrais apportez une amélioration au javascript pour que:

    -que la div soit vierge à la création avec juste le curseur
    -qu'a l'edition de la div, la touche espace n'est pas pour evenement un retour chariot
    -que ce retour chariot soit effectif seulement en bout de div
    -qu'au drop dans la div dustin, la div créer perde ses propriétés (au moins celle de l'edition pour éviter la modification du texte dans la div cible)==>ceci est je crois possible en modifiant la class de la div


    Merci encore aux contributions.(si seulement je savez faire tous ça)

  14. #14
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Vortexia Voir le message
    (si seulement je savez faire tous ça)
    Si seulement c'était tout-à-fait possible !

  15. #15
    Futur Membre du Club
    Homme Profil pro
    ingenieur
    Inscrit en
    Janvier 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : ingenieur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2012
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Rassure moi tout ceci est possible.

    En informatique tout est possible, seul les hommes sont limités, non ?

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

Discussions similaires

  1. comment créer une div scrollable html?
    Par aminaseo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/04/2010, 17h24
  2. créer une image "draggable" et "scalable"
    Par tagram dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/04/2009, 09h08
  3. [DIV][Javascript] créer une DIV sur onmouseover
    Par pmartin8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/08/2006, 15h10

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