HTML:
<select id="dropdown">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
jQuery:
$("#dropdown").prepend("<option value='' selected='selected'></option>");
Lorsque j'exécute ceci dans FireFox ou Chrome, l'option vierge insérée récemment sélectionnée est sélectionnée dans le menu déroulant. Quand je le lance dans IE8, Volvo a toujours sélectionné. Des idées?
Changez-le en ceci et ça va marcher:
$("#theSelectId").prepend("<option value=''></option>").val('');
Il semble que IE évalue uniquement l'attribut selected
lorsqu'il rencontre pour la première fois select
.
Je ne sais pas pourquoi votre code ne fonctionne pas (peut-être que cela a quelque chose à voir avec le fait que dans IE, selectedIndex
est en lecture seule), mais que cela fonctionne dans IE:
$("#dropdown").prepend("<option value='' selected='selected'></option>");
$("#dropdown")[0].options[0].selected = true;
Essayer:
$("#dropdown").prepend(new Option('', '', true, true));
$("#dropdown option:first").attr("selected", "selected");
Ou, si vous préférez:
$("#dropdown").prepend("<option value=''></option>");
$("#dropdown option:first").attr("selected", "selected");
L'utilisation de la première option est légèrement plus rapide. Les guillemets vierges désignent des valeurs et du texte vierges. Vous devez donc les renseigner au besoin. Vous n'avez pas besoin de l'attribut sélectionné dans le pré-ajout, nous les ajoutons ensuite. C'est quelque chose à voir avec Internet Explorer ne reconnaissant pas qu'il soit marqué comme sélectionné car il vient juste d'être créé.
$("#id").prepend("<option value=' ' selected='selected'></option>");
prepend ajoutera l'option to top et selected = 'selected' le fera sélectionner. Comme valeur = '', il s'agit donc d'une option de valeur vide.