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 :

[DOM] Ajout d'option dans un select : sous IE6


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [DOM] Ajout d'option dans un select : sous IE6
    Salut tout le monde,

    IE6 me cause des problème :

    J'ai deux champs de type select dans ma page. Le premier sert a choisir une région et la deuxième a choisir une ville.

    Lorsqu'une personne choisit une région, je remplis le select des villes avec les villes de la régions. Les données sont contenu dans deux tableau a 2 dimensions tabIdVille qui contient les identifiant unique de notre base de donné et tabNomVille qui contient les nom à afficher.

    Tout fonctionne correctement le problème est lorsque je rentre en mode d'édition et que je raffiche les villes en sélectionnant la ville que la personne a sauvegardé. (le numéro de la ville pour la condition est donné en php)

    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
     
    function chargerVille(region){
     
    var elSel = document.getElementById('Ville');
     
        //Vider le select de ville
        while(elSel.length > 0){
    	elSel.remove(elSel.length - 1);
        }
     
        //si une region est selectionné
        if(region != 0){
    	for(i=0;i<tabIdVille[region].length;i++){
    	    var elOptNew = document.createElement('option');
    	    elOptNew.text = tabNomVille[region][i];
    	    elOptNew.value = tabIdVille[region][i];
     
                //Demande de selectionner la ville 219133
                if(tabIdVille[region][i] == 219133){
                   elOptNew.selected = "selected";
     
                   //Pour testé la selection :
                   alert(i+" : "+elOptNew.value+" : "+elOptNew.text);
                }
     
                try {
                   elSel.add(elOptNew, null);
                    // standards compliant; doesn't work in IE
    	    }
    	    catch(ex) {
    		elSel.add(elOptNew); // IE only
                }
    	}
        }
    }
    Le code fonctionne parfaitement pour tout les fureteur sauf IE6.

    IE6 me donne les bonnes donnée dans le alert (la ville que je veut sélectionner et sont id) mais à l'affichage de la page, c'est toujours l'option précédente qui est affiché comme sélection. Donc si un client utilisant ie6 veut regarder sont profil, c'est toujours la mauvaise ville qui est selectionné, s'il ne porte pas attention, sa ville change à chaque fois qu'il sauvegarde sont profil.

    Est-ce que quelqu'un aurait une idée comment corriger ce problème ?

    Merci d'avance pour votre aide

  2. #2
    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
    de mémoire faut pas incrementer le options.length avant d'appender sous IE 6 ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 60
    Points : 68
    Points
    68
    Par défaut
    Sauf erreur de ma part, c'est normal que ton scipt ne marche pas sous IE.
    La raison, est que les méthodes ou fonctions add et remove sont des méthodes de la spécification DOM Level 2 que IE ne gère pas. Il faut utiliser la méthode qui t'a été proposée plus haut.
    Petite remarque, pour vider un , ça va plus vite de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monSelect.options.length = 0;

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Suivi du problème
    Désolé pour le délai de ma réponse, j'avais des projets plus urgent a finir avant de pouvoir continuer sur celui-ci.

    J'ai essayer d'ajouter l'incrémentation de mon options.length sur le code, mais ça n'a pas réglé mon problème.

    Cependant, j'ai remarqué que mon code se comporte correctement lorsqu'il est appeler par le "OnChange" de mon select des régions
    ( OnChange="chargerVille(this.value);" )

    Ce n'est donc que lorsque j'appelle la fonction au chargement de la page qu'elle ne s'exécute pas correctement. Pourtant je lance l'exécution après avoir créé les champs et le numéro de région est correcte sinon il ne m'afficherais pas la bonne liste de ville.

    J'ai donc essayer de lancer le chargement plusieurs fois avec des régions différentes en me disant que le problème se réglerais, mais ça donne toujours le même résultat (affiche la mauvaise sélection).

    Si quelqu'un aurait d'autre idée sur comment régler ce problème, ne vous géné pas

    P.S. Merci pour le lenght=0, ça accéléré un peu le temps de processus

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    et en utilisant l'objet Option ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var taListe = document.getElementById("idListe");
    var op;
     
    op = new Option("Texte", "Valeur", true, true);
     
    taListe.options.add(op);

  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 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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript">
    var myselect= document.getElementById('test')
    myselect.options.length=2;
    myselect.options[1].innerHTML="coucou"
    </script>

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut, on settant la valeur appropriée via la propriété option.selectedIndex ton problème devrait être réglé.

Discussions similaires

  1. 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
  2. Ajouter option dans un select de ma fenêtre parente
    Par keumlebarbare dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 03/12/2009, 14h12
  3. ajout dynamique des option dans un select
    Par rochdi123 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2009, 20h30
  4. [DOM] innerHTML dans un select sous IE.
    Par BobLunique dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/11/2007, 13h47
  5. [html/css]coloration des options dans un select
    Par the_edge dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 04/05/2005, 15h19

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