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 :

[syntaxe] Ajouter option dans une liste


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut [syntaxe] Ajouter option dans une liste
    Bonjour tout le monde,
    j'ai 2 pages HTML suivante :

    index.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <form name="monform">
    <select name="choix" id="choix">
    <option value="rabat">rabat</option>
    <option value="paris">paris</option>
    <option value="berlin">berlin</option>
    </select>
    <input type="button" value="new" onClick="window.open('ajout.html','ajouter_ville','width=200,height=200')">
    </form>
    ajout.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <script language="javascript">
    function refreshPage(newValue){
      var w = window.opener.document.getElementById('choix');
      var content = w.innerHTML;
       content += '<option value="' + newValue + '">' + newValue + '</option>';
       w.innerHTML = content;
    }
    </script>
    <form name="form">
    ville <input type="text" name="ville" onBlur="refreshPage(this.value)">
    <input type="button" value="ok" onClick="self.close();">
    </form>
    mon problème est que sous internet explorer la liste n'est pas affichée, elle est toute vide.
    j'ai tester le même script sous Mozilla Firefox et Opera et il fonctionne bien.
    pourquoi ça ne marche pas avec IE ? est ce qu'il y'a un autre moyen pour le faire fonctionner correctemet avec IE.

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Développeur multimédia
    Inscrit en
    Février 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Février 2007
    Messages : 60
    Points : 55
    Points
    55
    Par défaut
    Je viens de tester ton code sous IE et ça marche !!!
    Le probleme est au niveau de q page ? index/ajout ?

  3. #3
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Lorsque tu ajoute une nouvelle ville dans la page "ajout", elle apparait dans la liste des ville de la page "index" .
    Car c'est ca mon problème avec IE. la liste apparait vide même les villes déjà existantes dans la liste ont disparu.

  4. #4
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814

  5. #5
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Manipuler l'innerHTML n'est pas la seule solution possible, il existe des alternatives pour ajouter des options dans un SELECT.

    Soit créer une instance avec new option(texte,valeur), soit ajouter un noeud.

    Peut-être auras-tu moins de pb avec l'une ou l'autre de ces façons.
    Un ascenseur est une machine qui passe quand même la moitié de son temps à descendre.

  6. #6
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Curieusement on peut aussi se passer de la creation de Noeud ou de l'ajout d'une option, il suffit de modifier la longueur de la collection d'options de la liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <select id='test'>
    </select>
    <script type='text/javascript'>
    var myselect = document.getElementById('test')
    myselect.options.length=10
    for(i=0;i<myselect.length;i++){
    myselect.options[i].innerHTML="option " +i
    }
    </script>
    Fonctionne sous IE et FFX ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Merci bien pour ce lien, j'ai trouvé la solution a mon problème.
    mais j'arrive pas à savoir pourquoi mon script n'a pas fonctionné avec IE tandis qu'il fonctionne bien avec FF te Opera.

    Merci une deuxième fois pour vous tous.


  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Euh Achos, si tu pouvais éviter le mulitpost


    http://www.developpez.net/forums/sho...d.php?t=285048
    Je t'y donne une réponse qui fonctionne sous IE et firefox


  9. #9
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Merci bien,
    je suiverai bien ton conseil à propos du multipostage, désolé

    Et Merci encore pour l'aide

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    dis moi quand même si la solution que je t'ai apportée te satisfait

  11. #11
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Biensure le résultat est largement suffisant.
    Merci infiniment, et aussi pour le lien que vous m'avez donné sur la transmission des données entre les feuilles Mère et fille.


    j'ai même trouver une autre méthode pour réaliser ce script la voilà :

    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <form name="f_ajout">
    <label> Ville : 
    	<select name="ville">
    		<option value="rabat">rabat</option>
    		<option value="rabat">paris</option>
    		<option value="rabat">rome</option>
    	</select>
    </label>
    <input type=button value="new" onClick="window.open('popup.html','ajouter_ville','width=200,height=200,top=200,left=300').focus();"><br>
    </form>
    popup.html
    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>
    <title>Ajouter une ville</title>
    <script language="javascript">
    	function Valider(form){
    		var bval = true;
     
    			if (form.champ.value=="" && bval){
    				alert('Veuillez saisir la ville');
    				bval = false;
    				form.champ.focus();
    			}
     
    			if (bval){
     
    				var nouvelleOption = window.opener.document.createElement("option");
    				  nouvelleOption.value = form.elements['champ'].value;
    				  nouvelleOption.appendChild(window.opener.document.createTextNode(form.champ.value));
    				  window.opener.document.forms["f_ajout"].ville.appendChild(nouvelleOption);
    				} 
     
    		return bval
    	}
    </script>
    </head>
     
    <body onLoad="document.f1.champ.focus();">
    <form name="f1" onSubmit="return Valider(this);">
    <h4>Ajouter une ville</h4>
    <input type="text" name="champ">
    <input type="submit" value="Enregistrer" onClick="self.close();">
    </form>
    </body>
    </html>
    qu'est ce que vous pensez ?

  12. #12
    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 637
    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 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    ton self.close() risque de te poser des soucis ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  13. #13
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut
    Bonjour tout le monde,
    mon problème est résolu dans un autre forum que j'ai posté, intitulé :
    [Syntaxe]Problème pour rafraichir une liste avec internet explorer .

    Pour ceux qui vont la solution rendez-vous a ce lien:
    http://www.developpez.net/forums/sho...d.php?t=285048

    Bonne chance

  14. #14
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    personnellement, j'aime bien accèder à un élément quel qu'il soit par la méthode getElementById()

    Les syntaxes du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.maForme.monElement
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms["f_ajout"].ville.
    que je trouve un peu longues, me donnent parfois mal au crâne

    Avec getElementById, je sais ce quel élément est ciblé.

    ton self.close() risque de te poser des soucis ...
    +1 Ta fenêtre risque de se fermer avant la mise à jour de la liste.

  15. #15
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut

    Non pas du tout j'ai aucun problème.
    le traitement s'effectue avant la fermeture de la fenêtre, donc pas de souci.
    Voici mon script final :

    index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form name="f_ajout">
    <label> Ville : 
    <select name="ville">
    <option value="choisir" selected="selected">-choisir-</option>
    <option value="rabat">rabat</option>
    <option value="rabat">paris</option>
    <option value="rabat">rome</option>
    </select>
    </label>
    <input type=button value="new" onClick="window.open('popup.html','ajouter_ville','width=200,height=200,top=200,left=300').focus();"><br>
    </form>
    popup.html
    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
     
    <html>
    <head>
    <title>Ajouter une ville</title>
    <script language="javascript">
      function Valider(form){
        var bval = true;
     
          if (form.champ.value=="" && bval){
    	alert('Veuillez saisir la ville');
    	bval = false;
    	form.champ.focus();
             }
     
          if (bval){
     
          var nouvelleOption = window.opener.document.createElement("option");
          nouvelleOption.value = form.elements['champ'].value;
          nouvelleOption.selected = 'selected';
          nouvelleOption.appendChild(window.opener.document.createTextNode(form.champ.value));
      window.opener.document.forms["f_ajout"].ville.appendChild(nouvelleOption);
         } 
     
      return bval
    }
    </script>
    </head>
     
    <body onLoad="document.f1.champ.focus();">
    <form name="f1" onSubmit="return Valider(this);">
    <h4>Ajouter une ville</h4>
    <input type="text" name="champ">
    <input type="submit" value="Enregistrer" onClick="self.close();">
    </form>
    </body>
    </html>
    pour eviter le pb de self.close()
    je peut modifier un peut dans la popup comme suite :
    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
     
     
    <html>
    <head>
    <title>Ajouter une ville</title>
    <script language="javascript">
      function Valider(form){
         var bval = true;
       if (form.champ.value=="" && bval){
               alert('Veuillez saisir la ville');
    	bval = false;
    	form.champ.focus();
           }
     
    	if (bval){
     
           var nouvelleOption = window.opener.document.createElement("option");
           nouvelleOption.value = form.elements['champ'].value;
           nouvelleOption.selected = 'selected';
           nouvelleOption.appendChild(window.opener.document.createTextNode(form.champ.value));
      window.opener.document.forms["f_ajout"].ville.appendChild(nouvelleOption);
      self.close();
    	} 
     
     return bval
    	}
    </script>
    </head>
     
    <body onLoad="document.f1.champ.focus();">
    <form name="f1">
    <h4>Ajouter une ville</h4>
    <input type="text" name="champ">
    <input type="submit" value="Enregistrer" onClick="return Valider(f1);">
    </form>
    </body>
    </html>
    j'ai testé les 2 cas est ca marche trés bien.
    qu'est ce que vous pensez ?

  16. #16
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    Citation Envoyé par achos
    j'ai testé les 2 cas est ca marche trés bien.
    qu'est ce que vous pensez ?
    bah, si tu n'as pas ce message :

    Votre navigateur a causé une défaillance dans le module xxx.dll. Votre application va se fermer. Si le problème persiste veuillez contacter le fabricant. Cliquez sur "Détails" pour voir l'état de la pile.
    il n'y a pas de problème

  17. #17
    Membre régulier Avatar de achos
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 147
    Points : 84
    Points
    84
    Par défaut


    Non j'ai aucun message.
    Est ce que vous avez téster mon script ? avez vous des messages de ce genre avec mon script ?

  18. #18
    Expert éminent sénior

    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
    Points : 36 571
    Points
    36 571
    Par défaut
    Comme il est pu là pour répondre, je me permets :
    A mon avis, il le dit pas par hasard

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  19. #19
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    J'ai testé ton script je n'ai eu aucun souci (iE5 et Firefox).


    Disons qu'avec le script que je t'ai donné dans l'autre discussion, j'ai eu quelques soucis avec IE :

    Citation Envoyé par Auteur
    Dans un premier temps, j'accèdais à ta liste (getElementById()) dans une fonction de la pop-up et je la mettais à jour. L'ennui est que cela faisait planter IE.
    dans popup.html j'ai fait ceci dans un premier temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function ajouterVille()
    {
    var ville = document.getElementById("idText").value;
    var liste = window.opener.document.getElementById("choix");
    var elOption = new Option(ville, ville, false, false);
     
    //Ajout dans le select de l'option
    liste.options.add(elOption);
    }
    J'ai eu droit à "une erreur interne" sous IE, avant l'écran bleu
    Pour être précis, j'ai planté 5 fois avec cette version du script

    D'où cette version dans laquelle tu vois dans popup.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function ajouterVille()
    {
      var ville = document.getElementById("idText").value;
      //on transmet a la fonction ajouter() de la fenetre mere le nom de la ville
      window.opener.ajouter(ville);
    }
    et dans index.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function ajouter(ville)
    {
      var liste = document.getElementById("choix");
      var elOption = new Option(ville, ville, false, false);
     
      //Ajout dans le select de l'option
      liste.options.add(elOption);
      alert(ville+" a été ajoutée à la liste");
     
    }
    CQFD comme on dit


    Petite parenthèse : la méthode add peut prendre un second paramètre qui est la position de l'option dans la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      liste.options.add(elOption, 0);
    la nouvelle option sera toujours en haut de la liste.

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/12/2013, 21h38
  2. Ajout element option dans une liste sous IE8
    Par eag35 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/11/2010, 11h08
  3. ajout d'option dans une liste déroulante
    Par onylink dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/03/2009, 11h36
  4. [MySQL] Ajout d'options dans une liste déroulante à partir du résultat d'une requête
    Par minogttao dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/12/2006, 18h18
  5. [PHP-JS] ajout d'options dans une liste deroulante
    Par moonia dans le forum Langage
    Réponses: 10
    Dernier message: 04/05/2006, 11h18

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