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 :

Copier une liste <select> � l'identique


Sujet :

JavaScript

  1. #1
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut Copier une liste <select> � l'identique
    Bonjour,

    je pense que mon probl�me fait appel � de l'AJAX, � moins que je ne me complique pour rien (et �a ce serait gentil de me le dire ).

    J'ai un formulaire avec plusieurs listes d�roulantes, aliment�es par le nom de soci�t�s provenant de la base de donn�es. Chaque liste correspond � une cat�gorie diff�rente.

    Ex :
    Assureur - <select></select> "+"
    Installateur - <select></select> "+"
    [...]

    A c�t� de ces listes, j'ai un bouton "+" associ�. Lorsque l'on clique dessus, j'aimerai faire appara�tre juste en dessous de ma liste, la m�me liste avec le m�me nom de cat�gorie.

    Ex :
    Assureur - <select></select> "+" > je clique et �a affiche :

    Assureur - <select></select>

    Donc j'aurai deux fois la m�me liste, et je pourrai s�lectionner une autre soci�t� appartenant � la m�me cat�gorie.

    J'ai pens� au fait qu'il y avait les listes � choix multiples, mais esth�tiquement parlant sur ma page, �a ne ferait pas terrible.
    C'est pourquoi je cherche une autre solution !

    J'ai donc commenc� par cr�er une ligne avec le nom de ma cat�gorie, et la liste d�roulante des soci�t�s, puis le bouton + :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $nomcat = $catsoc['nom_categorie_societe'];
    $idcat = $catsoc['id_categorie_societe'];
    echo '<tr>';
    echo '<td>'.$nomcat.'</td>
    	<td><select name="'.$idcat.'">
    			<option value="0-0">Sélectionnez une société</option>';
    			$req = mysql_query("SELECT id_societe, nom_societe FROM societe ORDER BY nom_societe ASC;");
    			while ($donnees = mysql_fetch_array($req))
    			{
    				echo '<option value="'.$donnees['id_societe'].'-'.$donnees['nom_societe'].'"'. $selected.'>'.$donnees['nom_societe'].'</option>';
    			}
    			echo '</select></td><td>';
    			echo '<input type="button" name="add" value="+" onclick="add_soc('.$idcat.$nomcat.');"/></td></tr>';
    Juste en dessous je me suis dit qu'il fallait cr�er un div pour afficher la nouvelle liste d�roulante :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    echo '<tr><td><div id="div'.$idcat.$nomcat.'" style="display:none;"></div></td></tr>';
    Et ma fonction add_soc() appel�e sur le onClick du bouton + :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    function add_soc(id)
    {
    	document.getElementById('div'+id).style.display = 'block';
    	document.getElementById('div'+id).innerHTML = '<select name="'+id+'"><option></option></select>';
    }
    Et pour le moment �a s'arr�te ici. Je pensais ensuite faire appel � une requ�te Ajax pour remplir ma liste d�roulante, mais �a me ferait cr�er encore un div � l'int�rieur de celui ci ?

    J'ai l'impression que �a va faire beaucoup de choses en fait tout �a pour recopier un �l�ment.
    D'autant plus qu'� ce stade l�, j'ai cette erreur qui s'affiche :
    missing ) after argument list
    [Break on this error] add_soc(45assureur);
    Donc est-ce que je pars dans la bonne direction ? Est-ce que je me complique beaucoup trop ?
    Un peu d'aide serait la bienvenue ^^

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Si c'est juste pour copier exactement la liste, utilises plutot un cloneNode.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    var laListeACopier = document.getElementById("lIdDeLaListeACopier")
    var laDivOuAjouterLaListe = document.getElementById("lIdDeLaDivOuAjouterLaListe")
    laDivOuAjouterLaListe.appendChild(laListeACopier.cloneNode(true)

  3. #3
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    J'ai utilis� ta solution :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    echo '<input type="button" name="add" value="+" onclick="add_soc('.$idcat.');"/></td></tr>';
    echo '<tr><td><div id="div'.$idcat.'" style="display:none;"></div></td></tr>';
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    function add_soc(id)
    {
    	var laListeACopier = document.getElementById(id)
    	var laDivOuAjouterLaListe = document.getElementById("div"+id)
    	laDivOuAjouterLaListe.appendChild(laListeACopier.cloneNode(true)
    }
    D�s l'entr�e sur la page j'ai cette erreur :
    missing ) after argument list
    et �a me retourne cette erreur une fois test� :
    add_soc is not defined
    function onclick(event) { add_soc(45); }
    Ce qui signifie que la fonction n'existe pas ?

  4. #4
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par d�faut
    Oui ^^

  5. #5
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par d�faut
    ...Parce que tu as oubli� une fin de parenth�se

    ...(true))

  6. #6
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    Mais euuuuh, si elle est bien d�clar�e dans mon code, pourquoi qu'il me dit �a firebug ? Oo

    D�s que j'ouvre la page j'ai cette erreur :
    missing ) after argument list
    [Break on this error] laDivOuAjouterLaListe.appendChild(laListeACopier.cloneNode(true);\n
    EDIT : ben oui forc�ment ... x) et si je veux r�cup�rer le nom de ma cat�gorie en plus ? Est-ce que je peux faire : add_soc(id,nom) puis ensuite faire deux appendchild ?

    EDIT 2 :
    j'ai test� :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function add_soc(id,nom)
    {
    	document.getElementById("div"+id).style.display = 'block';
    	var laListeACopier = document.getElementById(id);
    	var leTdACopier = document.getElementById(nom);
    	var laDivOuAjouterLaListe = document.getElementById("div"+id);
    	laDivOuAjouterLaListe.appendChild(leTdACopier.cloneNode(true));
    	laDivOuAjouterLaListe.appendChild(laListeACopier.cloneNode(true));
    }
    avec :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    echo '<input type="button" name="add" value="+" onclick="add_soc('.$idcat,$nomcat.');"/></td></tr>';
    mais j'ai toujours cette erreur de parenth�se manquante, sauf que l� je n'arrive pas � voir o� :/ (et pour mettre id,nom dans ma fonction je sais pas trop comment faire non plus)

  7. #7
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Bonjour,
    Citation Envoy� par baggie Voir le message
    mais j'ai toujours cette erreur de parenth�se manquante,
    la syntaxe �tant correcte � pr�sent, �a peut �tre un probl�me de cache

    => CTRL + F5 ?

    A+

  8. #8
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    J'ai d�j� tent� cette solution mais sans effet

    Est-ce que c'est l'appel de ma fonction avec une virgule au milieu qui lui pose probl�me ? Quand je vois firebug > j'ai add_soc(idnom) sans aucune s�paration.

    Hors ma fonction est : add_soc(id,nom).

    Est-ce que �a pourrait venir d'ici � tout hasard ?

    EDIT : j'ai test�
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    onclick="add_soc('.$idcat.','.$nomcat.');"
    et cette fois mon erreur est que "nomcategorie is not defined".

  9. #9
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par baggie Voir le message
    Est-ce que �a pourrait venir d'ici � tout hasard ?
    Ben oui �videmment

    A+

  10. #10
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par baggie Voir le message
    et cette fois mon erreur est que "nomcategorie is not defined".
    Et comme il n'y a pas de "nomcategorie" dans le code que tu montres, c'est que tu as une autre erreur ailleurs

    A+

  11. #11
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par d�faut
    Tu devrais croire ton document HTML.

    Ta virgule ne fait pas parti de ton echo PHP.
    Il faut se fier � son document lorsqu'on est en javascript. C'est dingue ce qu'on voit comme code PHP sur ce forum Javascript...

  12. #12
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    Citation Envoy� par E.Bzz Voir le message
    Et comme il n'y a pas de "nomcategorie" dans le code que tu montres, c'est que tu as une autre erreur ailleurs

    A+
    j'ai mis nomcategorie pour dire que c'est ma variable nom qui avait un probl�me.

    J'aurai pu dire en fait que j'obtiens : "assureur is not defined".

    donc en gros ma variable nom dans la fonction n'a pas l'air de bien fonctionner x)

    kernelfailure > euh j'ai pas tout compris, �a veut dire que j'ai mis du code php l� o� il fallait surtout pas ?

  13. #13
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par baggie Voir le message
    donc en gros ma variable nom dans la fonction n'a pas l'air de bien fonctionner x)
    Donc, comme quand il n'y a pas la virgule entre tes 2 param�tres ...
    On peut voir le code actuel g�n�r� ?

    A+

  14. #14
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Citation Envoy� par baggie Voir le message
    j'ai mis du code php l� o� il fallait surtout pas ?
    Dans les forums Javascript, HTML, CSS la r�gle est de poster le code g�n�r�.
    Ne demande pas pourquoi, tu viens d'en donner la meilleurs l'illustration possible

    A+

  15. #15
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par d�faut
    Citation Envoy� par baggie Voir le message
    euh j'ai pas tout compris, �a veut dire que j'ai mis du code php l� o� il fallait surtout pas ?
    C'est une remarque g�n�rale.

    Javascript �tant c�t� client (navigateur), c'est donc ce context qui est important : La page vue par la navigateur.

    PHP est c�t� serveur, donc en s'en fout. C'est bien �videment ce que PHP va g�n�rer qui importe : le r�sultat c�t� client.
    Clairement, tu verra que ton echo est dans les choux et qu'il te manque ta virgule.

    On n'est pas des compilateurs PHP

  16. #16
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    Hum ah oui je vois ...

    Bon alors quand j'arrive sur la page j'ai ceci :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    <input type="button" name="add" value="+" onclick="add_soc(45,assureur);"/></td></tr><tr><td><div id="div45" style="display:none;"></div></td></tr>
    Et quand je clique sur mon bouton, rien de plus s'affiche. J'ai juste dans fireBug :
    assureur is not defined
    function onclick(event) { add_soc(45, assureur); }
    C'est plus clair ou ... ?

  17. #17
    Expert �minent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par d�faut
    Comme de l'eau de roche !A+

  18. #18
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    Ah ben oui ... merci !!
    �a fonctionne tr�s bien maintenant, juste un petit d�tail : j'ai un saut de ligne entre mon <td> et mon <select>, comment pourrai-je l'enlever ?

    Question : si dans mon <tr> j'ai un <td> et un <select>. Si je demande de cloner le <tr>, est-ce que du coup j'aurai tout le contenu qui va se cloner ?

  19. #19
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par d�faut
    Citation Envoy� par baggie Voir le message
    Ah ben oui ... merci !!
    �a fonctionne tr�s bien maintenant, juste un petit d�tail : j'ai un saut de ligne entre mon <td> et mon <select>, comment pourrai-je l'enlever ?
    Code HTML s.t.p. ?

    Citation Envoy� par baggie Voir le message
    Question : si dans mon <tr> j'ai un <td> et un <select>. Si je demande de cloner le <tr>, est-ce que du coup j'aurai tout le contenu qui va se cloner ?
    Bah oui. Tout du <tr> au </tr>.

  20. #20
    Membre �clair� Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par d�faut
    Parfait ! J'ai donc copi� mon tr en entier et �a fonctionne !

    Merci � vous

    PS : juste un probl�me de colspan � changer x)

    EDIT : normal que dans le code source de ma page je n'ai que ma premi�re liste qui s'affiche m�me s'il y en a plusieurs ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    <tr id="assureur"><td>assureur</td>
    <td><select id="45">
    		<option value="0-0">Sélectionnez une société</option><option value="13-ste1">ste1</option><option value="14-ste2">ste2</option></select></td><td>			<input type="button" name="add" value="+" onclick="add_soc('45','assureur');"/></td></tr>
    	<tr><td><div id="div45" style="display:none;"></div></td></tr>
    EDIT 2 : j'ai un probl�me de colspan (cf image, il faudrait que toutes mes listes soient align�es) Voici ce que me donne firebug :
    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
    34
    35
    36
    37
     
    <tr id="Assureur">
         <td>Assureur</td>
         <td>
                <select id="46">
                </select>
         </td>
         <td>
               <input type="button" onclick="add_soc('46','Assureur');" value="+" name="add"/>
          </td>
    </tr>
    <tr>
           <td>
                  <div id="div46" style="display: block;">
                  <tr id="Assureur">
                         <td>Assureur</td>
                         <td>
                                <select id="46">
                                       <option value="0-0">Sélectionnez une société</option>
                                       <option value="13-ste1">ste1</option>
                                       <option value="14-ste2">ste2</option>
                                 </select>
                          </td>
                          <td>
                          </td>
                     </tr>
                     <tr id="Assureur">
                            <td>Assureur</td>
                           <td>
                                   <input type="button" onclick="add_soc('46','Assureur');" value="+" name="add"/>
                          </td>
                           <td>
                            </td>
                      </tr>
      </div>
    </td>
    </tr>
    Images attach�es Images attach�es  

Discussions similaires

  1. Pb de mise en forme dans une liste de selection
    Par crashyear dans le forum Balisage (X)HTML et validation W3C
    R�ponses: 2
    Dernier message: 07/09/2006, 11h58
  2. rafraichir une page sur une liste de selection
    Par klimero dans le forum G�n�ral JavaScript
    R�ponses: 26
    Dernier message: 20/07/2006, 15h52
  3. R�ponses: 12
    Dernier message: 02/05/2006, 19h37
  4. gerer une liste de selection multiple
    Par lapinours dans le forum Access
    R�ponses: 5
    Dernier message: 10/04/2006, 12h21

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