2010-03-11 4 views
0

Comment ajouter l'attribut "selected" à une option de menu déroulant basée sur cette option correspondant à une variable?Ajouter l'attribut "selected" à une option déroulante avec jQuery

Voici comment la liste déroulante est peuplée ...

loginOptions = ["First", "Second", "Third"]; 
     var Login = $('#Login'); 

     for (var i = 0; i < loginOptions.length; i++) { 
      Login.append('<option value="'+ loginOptions[i] +'">'+    loginOptions[i] +'</option>'); 
     } 

Je veux marquer une option comme « choisie » en fonction de si oui ou non sa valeur correspond à une autre variable. donc si loginOption[i] est égal à var existingLoginValue puis définissez cette option à « sélectionné »

Quelque chose qui ferait

if(loginOptions[i] === existingLoginValue){ print 'selected'; }; 

Merci!

Répondre

7

j'utiliser .val() à la fin de votre méthode, ce jeux basés sur la valeur, comme celui-ci:

$('#Login').val(existingLoginValue); 

De même, pour obtenir la valeur, appelez sans paramètres comme celui-ci:

var currentValue = $('#Login').val(); 
+0

C'est une excellente solution. J'aurais aimé y penser plutôt que de perdre du temps à jouer avec le réglage sélectionné. Merci! – Stuart

0

Utilisez

$('#Login').selectedIndex = i 
1

Si vous voulez seulement faire une valeur alors oui, la val() œuvres. Sinon, vous pouvez aussi le faire:

$option=$('<option value="'+ loginOptions[i] +'">'+ loginOptions[i]+'</option>').appendTo(Login); 
if (loginOptions[i] == existingLoginValue) { 
    $option.attr('selected',true)  
} 

er, quelqu'un a fait remarquer que cela ne fait pas vraiment de sens car cela impliquerait plusieurs options avec la même valeur. Je voulais écrire quelque chose comme ceci:

existingLoginValues = ['foo','bar'] 
$option=$('<option value="'+ loginOptions[i] +'">'+ loginOptions[i]+'</option>').appendTo(Login); 
if (existingLoginValues.indexOf(loginOptions[i]) != -1) { 
    $option.attr('selected',true)  
} 

la fonction indexOf est prise en charge dans la plupart des navigateurs, sauf (bien sûr) IE6. Voir "Best way to find an item in a JavaScript Array?"

+0

... Quand auriez-vous 2 options avec la même valeur exacte? Dans son code il y a 3 options distinctes. –

+0

Oh bon appel. Modifier ma réponse maintenant ... –

Questions connexes