J'ai une case de sélection:
<select id="selectBox">
<option value="0">Number 0</option>
<option value="1">Number 1</option>
<option value="2">Number 2</option>
<option value="3">Number 3</option>
<option value="4">Number 4</option>
<option value="5">Number 5</option>
<option value="6">Number 6</option>
<option value="7">Number 7</option>
</select>
Je voudrais définir l'une des options comme "sélectionnée" en fonction de son index sélectionné.
Par exemple, si j'essaye de mettre "Numéro 3", j'essaye ceci:
$('#selectBox')[3].attr('selected', 'selected');
Mais ça ne marche pas. Comment puis-je définir une option comme sélectionnée en fonction de son index à l'aide de jQuery?
Merci!
jquery
jquery-selectors
BoltClock
la source
la source
Réponses:
REMARQUE : la réponse dépend de jQuery 1.6.1+
Merci pour le commentaire,
.get
ne fonctionnera pas car il retourne un élément DOM, pas un élément jQuery. Gardez à l'esprit que la.eq
fonction peut également être utilisée en dehors du sélecteur si vous préférez.Vous pouvez également être plus concis / lisible si vous souhaitez utiliser la valeur , au lieu de compter sur la sélection d'un index spécifique :
Remarque:
.val(3)
fonctionne également pour cet exemple, mais les valeurs non numériques doivent être des chaînes, j'ai donc choisi une chaîne pour la cohérence.(par exemple,
<option value="hello">Number3</option>
vous oblige à utiliser.val("hello")
)la source
.prop()
plutôt que.attr()
.Cela peut également être utile, j'ai donc pensé l'ajouter ici.
Si vous souhaitez sélectionner une valeur basée sur la valeur de l'élément et non sur l'index de cet élément, vous pouvez effectuer les opérations suivantes:
Votre liste de sélection:
Le jquery:
L'élément sélectionné serait désormais "Numéro 2".
la source
.attr('selected', 'selected')
ne doit pas être utilisé plusieurs fois sur la même sélection, car certains navigateurs peuvent devenir confus (dans certains cas, ils commencent à marquer plusieurs éléments dans le dom commeselected=selected"
. Si vous devez modifier la valeur sélectionnée plus souvent (par exemple sur un bouton cliquez) utiliser.prop('selected', true)
comme suggéré par Marc. - J'ai juste eu beaucoup de douleur - et perdu du temps - à cause de ce problème!Essayez plutôt ceci:
la source
Encore plus simple:
la source
lorsque vous souhaitez sélectionner avec les meilleures façons de définir la sélection, vous pouvez utiliser
$('#select option').removeAttr('selected');
pour supprimer les sélections précédentes.la source
Ce qui est important à comprendre, c'est que
val()
pour unselect
élément renvoie la valeur de l'option sélectionnée, mais pas le nombre d'éléments commeselectedIndex
en javascript.Pour sélectionner l'option avec
value="7"
vous, vous pouvez simplement utiliser:Pour désélectionner l'option, utilisez un tableau vide:
Et bien sûr, vous pouvez sélectionner plusieurs options *:
* Cependant, pour sélectionner plusieurs options, votre
<select>
élément doit avoir unMULTIPLE
attribut, sinon cela ne fonctionnera pas.la source
J'ai toujours eu des problèmes avec les accessoires («sélectionnés»), ce qui suit a toujours fonctionné pour moi:
la source
Essaye ça:
Finalement, déclenchez un événement .change:
la source
J'espère que cela pourrait aider trop
la source
sélectionnez la 3ème option
Exemple sur jsfiddle
la source
NB:
est incorrect, la déférence du tableau vous obtient l'objet dom, pas un objet jquery, donc il échouera avec une TypeError, par exemple dans FF avec: "$ ('option # selectBox') [3] .attr () pas une fonction . "
la source
Pour clarifier les réponses de Marc et John Kugelman, vous pouvez utiliser:
get()
ne fonctionnera pas s'il est utilisé de la manière spécifiée car il obtient l'objet DOM, pas un objet jQuery, donc la solution suivante ne fonctionnera pas:eq()
obtient filtre l'ensemble jQuery sur celui de l'élément avec l'index spécifié. C'est plus clair que$($('#selectBox option').get(3))
. Ce n'est pas si efficace.$($('#selectBox option')[3])
est plus efficace (voir cas de test ).Cependant, vous n'avez pas vraiment besoin de l'objet jQuery. Ça fera l'affaire:
http://api.jquery.com/get/
http://api.jquery.com/eq/
Un autre point d'une importance vitale:
L'attribut "sélectionné" n'est pas la façon dont vous spécifiez un bouton radio sélectionné (dans Firefox et Chrome au moins). Utilisez l'attribut "vérifié":
Il en va de même pour les cases à cocher.
la source
Dans 1.4.4, vous obtenez une erreur: $ ("option # selectBox") [3] .attr n'est pas une fonction
Cela marche:
$('#name option:eq(idx)').attr('selected', true);
Où
#name
est select id etidx
est la valeur d'option que vous souhaitez sélectionner.la source
L' attribut selectedIndex javascript pur est la bonne solution, car il s'agit de javascript pur et fonctionne sur plusieurs navigateurs:
Voici une démo jsfiddle avec deux listes déroulantes utilisant l'une pour définir l'autre:
Vous pouvez également l'appeler avant de modifier le selectedIndex si vous voulez l'attribut "selected" sur la balise option ( voici le violon ):
la source
la source
J'utilise souvent le déclencheur («changement») pour le faire fonctionner
Exemple avec id select = selectA1 et position_index = 0 (option frist dans select):
la source
Lors de l'utilisation de ce qui précède, je continuais à recevoir des erreurs dans le kit Web (Chrome) en disant:
"TypeError non intercepté: l'objet # n'a pas de méthode 'attr'" "
Cette syntaxe arrête ces erreurs.
la source
Sélectionnez l'élément en fonction de la valeur dans la liste de sélection (surtout si les valeurs des options ont un espace ou un caractère étrange) en faisant simplement ceci:
De plus, si vous avez une liste déroulante (par opposition à une sélection multiple), vous voudrez peut-être faire un
break;
afin que vous n'obteniez pas la première valeur trouvée à être écrasée.la source
J'ai besoin d'une solution qui n'a pas de valeurs codées en dur dans le fichier js; en utilisant
selectedIndex
. La plupart des solutions proposées ont échoué sur un navigateur. Cela semble fonctionner dans FF10 et IE8 (quelqu'un d'autre peut-il tester dans d'autres versions)la source
Si vous souhaitez simplement sélectionner un élément en fonction d'une propriété particulière d'un élément, l'option jQuery de type [prop = val] obtiendra cet élément. Maintenant, je ne me soucie plus de l'index que je voulais juste l'élément par sa valeur.
la source
J'ai rencontré le même problème. Vous devez d'abord parcourir les événements (c'est-à-dire quel événement se produit en premier).
Par exemple:
Le premier événement génère une boîte de sélection avec des options.
Le deuxième événement consiste à sélectionner l'option par défaut à l'aide d'une fonction telle que val (), etc.
Vous devez vous assurer que le deuxième événement se produise après le premier événement .
Pour y parvenir, prenez deux fonctions, disons generateSelectbox () (pour la génération de la boîte de sélection) et selectDefaultOption ()
Vous devez vous assurer que selectDefaultOption () ne doit être appelé qu'après l'exécution de generateSelectbox ()
la source
Vous pouvez également initier plusieurs valeurs si votre boîte de sélection est un multiplicateur:
la source
vous pouvez définir dynamiquement la valeur de la variable selectoption ainsi que l'option sera sélectionnée.Vous pouvez essayer le code suivant
code:
CODE HTML:
la source
Prochainement:
$("#selectBox").attr("selectedIndex",index)
où index est l'index sélectionné sous forme d'entier.
la source