Bonjour à tous,
Alors voilà, cela fait 4heures que je me prend la tête sur un problème qui me rend complètement fou ! Tout fonctionne sur les autres navigateurs, mais sur Safari j'ai un souci que je n'ai trouvé sur aucun sujet Google.
L'objectif de mon script : lors de la sélection d'un élément d'une liste "select", je souhaite supprimer l'attribut "selected" de toutes les autres options. Pour ce faire, je sélectionne mes selects, je crée un événement "onChange()" qui supprime cet attribut "selected" sur les options sauf celui qui vient d'être sélectionné.
Le problème est le suivant : quand je clique sur un élément et que je récupère le "selectedIndex", Safari me renvoie 2 valeurs. Celle sélectionnée par défaut, et la nouvelle valeur.
Je souhaiterais obtenir seulement la dernière valeur sélectionnée.
A savoir que les autre navigateurs me renvoie seulement une valeur.
Quelqu'un aurait une idée s'il vous plaît ??
D'avance merci, car ce problème me bloque complètement.
Le HTML :

<select id="select_indice" name="name" required="required" class="class">
  <option value=""><vide></option>
  <option value="B" selected="selected">Bis</option>
  <option value="T">Ter</option>
  <option value="Q">Quater</option>
</select>

Le script JS :

var object = document.getElementsByTagName("select");
   var select = null;

   for (var i=0; i<object.length; i++) {
       select = object[i];

       select.onchange=function() {
            var children = this.childNodes;
            var selectedIndex = this.selectedIndex;

            alert(selectedIndex);

            for (var j=1; j<children.length; j++) {
                if (j != selectedIndex+1) {
                    var child = children[j];
                    //alert(child.text);
                    child.removeAttribute("selected");
                }
            }
       };
   }

2 réponses


Bonsoir eds,
Je pense que vouloir modifier toi même les attributs selected est risqué car normalement c'est géré par le navigateur.
Lorsque tu sélectionnes une valeur, automatiquement l'ancienne valeur perd l'attribut 'Selected'
Si toi, tu essayes de modifier l'attribut, c'est dangereux !!! en fonction du navigateur tu ne sais pas si ton code sera exécuté avant lui ou pas.
et puis quel intérêt ?

eds
Auteur

Bonjour et merci pour votre réponse,

Je précise que je travaille sur symfony et que lorsque je sélectionne une valeur dans la liste générée par symfony, l'ancienne valeur sélectionnée garde son attribut "selected"