Comportement combobox différent entre Chrome et Firefox

Comportement combobox différent entre Chrome et Firefox - Javascript/Node.js - Programmation

Marsh Posté le 01-07-2015 à 17:23:08    

Bonjour,
 
Je constate une différence de comportement entre Firefox et Chrome concernant les combobox (select).
 
Je récupère un tableau d'éléments depuis le serveur. Je parcours ce tableau et je construis une combobox grâce aux tags <option> et </option> que j'utilise sur chaque élément du tableau. En plus de ça, si dans ce tableau je trouve un élément qui correspond à celui préalablement renseigné pour l'objet utilisant la combobox, je le mets en haut des options et en rouge. Ça donne ça :
 

Code :
  1. // tableauFruits : tableau récupéré depuis le serveur
  2. // idObjet : ID de l'objet utilisant la combobox
  3. // optionsFruits : HTML des options construit depuis le tableau
  4. // selectFruits : combobox recevant les options
  5. for (var i = 0; i < tableauFruits.length; i++) {
  6.     if (tableauFruits[i][0] === idObjet) {
  7.         optionsFruits += '<option class="principal">' + tableauFruits[i][1] + '</option>';
  8.     } else {
  9.         optionsFruits += '<option>' + tableauFruits[i][1] + '</option>';
  10.     }
  11. }
  12. Y.one('#selectFruits').setHTML(optionsFruits); // méthode de YUI


 
Sur les deux navigateurs, la combobox est créée, valorisée avec la liste dans le bon ordre, et l'élément par défaut correspondant à idObjet est bien mis en tête de la liste et en rouge quand je déplie la combobox.
 
Mais sur Firefox, l'élément qui apparaît quand la combobox est refermée est le dernier de la liste (alors qu'il connait celui par défaut, je le vois dans les logs, et en plus si je déplie il est bien en rouge et en haut). De plus quand je l'ouvre, j'ai dit que la liste était dans le bon ordre avec l'élément principal en rouge, ce qui est le cas, mais par contre je suis positionné par défaut sur le dernier élément (celui qui est visible quand elle est fermée).
 
 
J'espère avoir été clair, donc si quelqu'un connaît la différence de fonctionnement entre les deux navigateurs, merci d'avance.

Reply

Marsh Posté le 01-07-2015 à 17:23:08   

Reply

Marsh Posté le 01-07-2015 à 17:47:58    

rajoute un selected="selected" en plus de ta classe "principal" ça devrait faire l'affaire

Reply

Marsh Posté le 01-07-2015 à 18:16:38    

J'avais déjà essayé ça ne change rien, par contre je viens de voir sur une autre combobox (sans le système de mettre le principal en rouge et tout ça), en fait Firefox m'affiche par défaut toujours le dernier élément du select.

Reply

Marsh Posté le 01-07-2015 à 18:34:25    

J'avais eu le même problème, j'avais du faire ça :  

Code :
  1. var option = $select[0].options[0];
  2. $select.val(option.val());
  3. $select[0].selectedIndex = 0;
  4. $select.trigger('change');


 
Enfin un truc du genre, mais c'est le selectedIndex qu'il fallait updater

Reply

Marsh Posté le 01-07-2015 à 19:04:24    

OK merci j'essaierai ça demain.

Reply

Marsh Posté le 02-07-2015 à 10:24:16    

Finalement j'ai juste eu à faire (avec YUI) :

Code :
  1. Y.one('#selectFruits').set('selectedIndex', 0);


 
Ce qui correspond en partie à ta réponse.
 
Ce qui est un peu con vu que dans le débogueur, l'index 0 était bien sélectionné (c'est même pour ça que c'est l'index 0 d'ailleurs, si je dis pas de conneries un élément passe forcément à index 0 quand il devient sélectionné). Juste pas affiché quand le select est replié.


Message édité par psychodarksquall le 02-07-2015 à 10:24:56
Reply

Marsh Posté le 02-07-2015 à 10:26:49    

Je suis comme toi, j'ai trouvé ça con, mais je n'ai jamais compris pourquoi, mais ce fix m'a permis de corriger le problème.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed