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 :

Passer les données d'un "select" à l'autre


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Passer les données d'un "select" à l'autre
    Bonjour à tous,
    J'ai récupéré ce script pour pouvoir passer les données d'un <select> à un autre :

    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
     
    <html><head>
    <script language="javascript">
    // On stocke les éléments dans un tableau
    var ls1=new Array("Alain","Brice","Charles","Denis","Emile","Fernand","Gérard","Hector");
    var ls2=new Array();
    // La fonction qui déplace de l'un à l'autre
    function deplace(sens){
    s1=document.frm.l1.selectedIndex; // Pour simplifier les écritures
    s2=document.frm.l2.selectedIndex; // ci-dessous ;)
    if(((sens=="1")&&(s1<0))||((sens=="2")&&(s2<0))){alert("Sélectionnez un élément du bon côté");sens="0";}
    if(sens=="1"){ls2[ls2.length]=ls1[s1];ls1.splice(s1,1);} // Ajout et suppression
    if(sens=="2"){ls1[ls1.length]=ls2[s2];ls2.splice(s2,1);} // Ajout et suppression
    ls1.sort();ls2.sort(); // Tri des tableaux
    }
    // La fonction qui actualise l'affichage
    function actu(){
          t="<select name='l1' size="+ls1.length+">"
          for(i=0;i<ls1.length;i++)
             t+="<option>"+ls1[i]+"</option>";
          document.frm.l1.outerHTML=t+"</select>";
          t="<select name='l2' size="+ls2.length+">"
          for(i=0;i<ls2.length;i++)
             t+="<option>"+ls2[i]+"</option>";
          document.frm.l2.outerHTML=t+"</select>";
    }
    </script>
    </head>
    <body onLoad="actu()">
    <form name="frm"><table><tr>
    <td valign=top><select name="l1"></select></td>
    <td><a href="javascript:deplace(1);actu();">>></a><br><br><a href="javascript:deplace(2);actu();"><<</a></td>
    <td valign=top><select name="l2"></select></td>
    </tr></table></form>
    </body></htmL>
    Tout fonctionne parfaitement sur Explorer. Mais rien ne s'affiche dans les select sur firefox.

    Quelqu'un a-t-il une idée ? Je m'arrache les cheveux !
    Merci d'avance.

    Bien à vous.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    Je sais pas ou tu es pris ce code mais il est mauvais. Son code est pas presenté pour etre lu. Bref du mauvais code. Je l'ai repris et remanier (correction plus indentation) afin qu'il fonctionne. Voici ce que cela donne :
    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
    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
     
    <html>
    	<head>
    		<script language="javascript">
    		// On stocke les éléments dans un tableau
    		var ls1=new Array("Alain","Brice","Charles","Denis","Emile","Fernand","Gérard","Hector");
    		var ls2=new Array();
    		// La fonction qui déplace de l'un à l'autre
    		function deplace(sens)
    		{
    			s1=document.frm.l1.selectedIndex; // Pour simplifier les écritures
    			s2=document.frm.l2.selectedIndex; // ci-dessous ;)
    			if(((sens=="1")&&(s1<0))||((sens=="2")&&(s2<0)))
    			{
    				alert("Sélectionnez un élément du bon côté");sens="0";
    			}
    			if(sens=="1")
    			{
    				ls2[ls2.length]=ls1[s1];ls1.splice(s1,1);
    			} // Ajout et suppression
    			if(sens=="2")
    			{
    				ls1[ls1.length]=ls2[s2];ls2.splice(s2,1);
    			} // Ajout et suppression
    			ls1.sort();
    			ls2.sort(); // Tri des tableaux
    		}
    		// La fonction qui actualise l'affichage
    		function actu()
    		{
    			while (document.frm.l1.length)
    				document.frm.l1.options[0] = null;
    			while (document.frm.l2.options.length)
    				document.frm.l2.options[0] = null;			
     
    			document.frm.l1.size = ls1.length;
    			for(i=0;i<ls1.length;i++)
    			{
    				new_element = new Option(ls1[i]);
                    document.frm.l1.options[document.frm.l1.length] = new_element;
    			}
    			document.frm.l2.size = ls2.length;
    			for(i=0;i<ls2.length;i++)
    			{
    				new_element = new Option(ls2[i]);
                    document.frm.l2.options[document.frm.l2.length] = new_element;
    			}
    		}
    		</script>
    	</head>
    	<body onLoad="actu()">
    		<form name="frm">
    			<table>
    				<tr>
    					<td valign=top>
    						<select name="l1"></select>
    					</td>
    					<td>
    						<a href="javascript:deplace(1);actu();">>></a>
    						<br><br>
    						<a href="javascript:deplace(2);actu();"><<</a>
    					</td>
    					<td valign=top>
    						<select name="l2"></select>
    					</td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    La partie qui s'occupe de reconstruire les options etaient degeulasses j'ai donc utilisé les vrais methodes du js

    Voila j'attends tes differents commentaires !!! A bientoooot

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Impeccable !
    En effet, c'est beaucoup plus clair. Et ça a le mérite de fonctionner parfaitement sur les deux navigateurs. Merci beaucoup !

    Je ne connaissais pas la fonction "Option" dans javascript. J'ai lu qu'on pouvait lui adjoindre plusieurs paramètres : le premier celui du texte, le deuxième la valeur. Je vais rajouter ce deuxième paramètre.
    Encore merci pour cette réponse.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Au fait...
    J'imagine que pour rajouter le 2e paramètre à Option, il suffit simplement de rajouter dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_element = new Option(ls1[i],valeurls1[i]);
    en précisant bien sûr en amont les valeurs de "valeurls1".

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Points : 233
    Points
    233
    Par défaut
    non non, tu veux ajouté quoi exactement? dis le moi je te montrerais

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    En HTML, pour <SELECT>, on peut ajouter des <OPTION> du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <SELECT>
    <OPTION value="valeur1">l'intitulé 1 de l'option
    <OPTION value="valeur2">l'intitulé 2 de l'option
    ...
    <OPTION value="valeurN">l'intitulé N de l'option
    Je voudrais donc rajouter la valeur (value) dans le script que tu m'as corrigé, en plus de l'intitulé. Si je me fais bien comprendre...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Je complique un peu la donne :
    Comment faire lorsque le premier <select> est dans un popup ou un iframe ???
    Ca me semble impossible........

    Citation Envoyé par jypees Voir le message
    Je sais pas ou tu es pris ce code mais il est mauvais. Son code est pas presenté pour etre lu. Bref du mauvais code. Je l'ai repris et remanier (correction plus indentation) afin qu'il fonctionne. Voici ce que cela donne :
    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
    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
     
    <html>
    	<head>
    		<script language="javascript">
    		// On stocke les éléments dans un tableau
    		var ls1=new Array("Alain","Brice","Charles","Denis","Emile","Fernand","Gérard","Hector");
    		var ls2=new Array();
    		// La fonction qui déplace de l'un à l'autre
    		function deplace(sens)
    		{
    			s1=document.frm.l1.selectedIndex; // Pour simplifier les écritures
    			s2=document.frm.l2.selectedIndex; // ci-dessous ;)
    			if(((sens=="1")&&(s1<0))||((sens=="2")&&(s2<0)))
    			{
    				alert("Sélectionnez un élément du bon côté");sens="0";
    			}
    			if(sens=="1")
    			{
    				ls2[ls2.length]=ls1[s1];ls1.splice(s1,1);
    			} // Ajout et suppression
    			if(sens=="2")
    			{
    				ls1[ls1.length]=ls2[s2];ls2.splice(s2,1);
    			} // Ajout et suppression
    			ls1.sort();
    			ls2.sort(); // Tri des tableaux
    		}
    		// La fonction qui actualise l'affichage
    		function actu()
    		{
    			while (document.frm.l1.length)
    				document.frm.l1.options[0] = null;
    			while (document.frm.l2.options.length)
    				document.frm.l2.options[0] = null;			
     
    			document.frm.l1.size = ls1.length;
    			for(i=0;i<ls1.length;i++)
    			{
    				new_element = new Option(ls1[i]);
                    document.frm.l1.options[document.frm.l1.length] = new_element;
    			}
    			document.frm.l2.size = ls2.length;
    			for(i=0;i<ls2.length;i++)
    			{
    				new_element = new Option(ls2[i]);
                    document.frm.l2.options[document.frm.l2.length] = new_element;
    			}
    		}
    		</script>
    	</head>
    	<body onLoad="actu()">
    		<form name="frm">
    			<table>
    				<tr>
    					<td valign=top>
    						<select name="l1"></select>
    					</td>
    					<td>
    						<a href="javascript:deplace(1);actu();">>></a>
    						<br><br>
    						<a href="javascript:deplace(2);actu();"><<</a>
    					</td>
    					<td valign=top>
    						<select name="l2"></select>
    					</td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    La partie qui s'occupe de reconstruire les options etaient degeulasses j'ai donc utilisé les vrais methodes du js

    Voila j'attends tes differents commentaires !!! A bientoooot

  8. #8
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 79

    Informations forums :
    Inscription : Janvier 2007
    Messages : 201
    Points : 154
    Points
    154
    Par défaut
    Merci Jypees ! Super

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Fiosi Voir le message
    En HTML, pour <SELECT>, on peut ajouter des <OPTION> du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <SELECT>
    <OPTION value="valeur1">l'intitulé 1 de l'option
    <OPTION value="valeur2">l'intitulé 2 de l'option
    ...
    <OPTION value="valeurN">l'intitulé N de l'option
    Je voudrais donc rajouter la valeur (value) dans le script que tu m'as corrigé, en plus de l'intitulé. Si je me fais bien comprendre...
    Pense à fermer les balises option

Discussions similaires

  1. Passer les données ISO en UT8 dans une base UT8.
    Par Space Cowboy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/06/2008, 13h15
  2. Passer les données d'une base à une autre
    Par 4rocky4 dans le forum Access
    Réponses: 3
    Dernier message: 18/03/2008, 19h30
  3. [Sunopsis V3]passer les données d'un fichier vers une table
    Par PetitChat73 dans le forum ODI (ex-Sunopsis)
    Réponses: 0
    Dernier message: 07/03/2008, 15h44

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