Si vous connaissez l'index, la valeur ou le texte. également si vous n'avez pas d'ID pour une référence directe.
Ceci , ceci et ceci sont toutes des réponses utiles.
Exemple de balisage
<div class="selDiv">
<select class="opts">
<option selected value="DEFAULT">Default</option>
<option value="SEL1">Selection 1</option>
<option value="SEL2">Selection 2</option>
</select>
</div>
$("#my_select").val("the_new_value").change();
... ... de soRéponses:
Un sélecteur pour obtenir l'élément d'option du milieu par valeur est
Pour un index:
Pour un texte connu:
EDIT : Comme indiqué ci-dessus, le PO pourrait avoir été après avoir modifié l'élément sélectionné dans la liste déroulante. Dans les versions 1.6 et supérieures, la méthode prop () est recommandée:
Dans les anciennes versions:
EDIT2 : après le commentaire de Ryan. Une correspondance sur "Sélection 10" peut être indésirable. Je n'ai trouvé aucun sélecteur pour faire correspondre le texte intégral, mais un filtre fonctionne:
EDIT3 : Soyez prudent avec
$(e).text()
car il peut contenir une nouvelle ligne faisant échouer la comparaison. Cela se produit lorsque les options sont implicitement fermées (pas de</option>
balise):Si vous utilisez simplement
e.text
des espaces supplémentaires, comme la nouvelle ligne de fin sera supprimée, ce qui rend la comparaison plus robuste.la source
Aucune des méthodes ci-dessus n'a fourni la solution dont j'avais besoin, alors j'ai pensé que je fournirais ce qui fonctionnait pour moi.
la source
prop
et nonattr
..attr
est correct. "sélectionné" est un attribut de <option> w3.org/TR/html5/forms.html#attr-option-selectedprop
de préférence àattr
. Cela évite d'avoir à rechercher chaque propriété sur w3.org afin de voir s'il ne s'agit que d'un attribut ou s'il est implémenté avec des actions de sauvegarde.Vous pouvez simplement utiliser la
val()
méthode:la source
the_value
. .val n'est pas une fonction sélecteur / filtre! C'est un accesseur de propriété et en lui passant cette chaîne, SETS la valeur. J'ai essayé de reprendre mon vote positif, mais il était trop tard après l'avoir réalisé lors des tests.Par valeur, ce qui a fonctionné pour moi avec jQuery 1.7 était le code ci-dessous, essayez ceci:
la source
.change()
était nécessaire. J'ai eu un exemple où je changeais de vignette sur la base d'un SELECT. Lorsque j'ai téléchargé un thème personnalisé, il était censé sélectionner "Thème personnalisé" dans la liste des options. L'.prop()
appel a fonctionné, mais sans.change()
, l'image miniature à droite de ma sélection n'a jamais été mise à jour.prop
valeur booléenne génère la même sortie. par exemple.prop('selected', true)
Il existe un certain nombre de façons de le faire, mais l'approche la plus propre a été perdue parmi les meilleures réponses et des tas d'arguments
val()
. Certaines méthodes ont également changé à partir de jQuery 1.6, donc cela nécessite une mise à jour.Pour les exemples suivants, je suppose que la variable
$select
est un objet jQuery pointant sur la<select>
balise souhaitée , par exemple via ce qui suit:Remarque 1 - utilisez val () pour les correspondances de valeurs:
Pour la correspondance des valeurs, l'utilisation
val()
est beaucoup plus simple que l'utilisation d'un sélecteur d'attribut: https://jsfiddle.net/yz7tu49b/6/La version setter de
.val()
est implémentée sur lesselect
balises en définissant laselected
propriété d'une correspondanceoption
avec la même chosevalue
, elle fonctionne donc très bien sur tous les navigateurs modernes.Remarque 2 - utilisez prop («sélectionné», vrai):
Si vous souhaitez définir directement l'état sélectionné d'une option, vous pouvez utiliser
prop
(pasattr
) avec unboolean
paramètre (plutôt que la valeur de texteselected
):par exemple https://jsfiddle.net/yz7tu49b/
Remarque 3 - autorisez les valeurs inconnues:
Si vous utilisez
val()
pour sélectionner un<option>
, mais que la val ne correspond pas (cela peut se produire en fonction de la source des valeurs), alors "rien" est sélectionné et$select.val()
revientnull
.Donc, pour l'exemple montré, et pour des raisons de robustesse, vous pouvez utiliser quelque chose comme ceci https://jsfiddle.net/1250Ldqn/ :
Note 4 - correspondance exacte du texte:
Si vous souhaitez faire correspondre le texte exact, vous pouvez utiliser une
filter
fonction avec. par exemple https://jsfiddle.net/yz7tu49b/2/ :bien que si vous avez des espaces supplémentaires, vous souhaiterez peut-être ajouter une garniture au chèque comme dans
Note 5 - correspondance par index
Si vous voulez faire correspondre par index, il suffit d'indexer les enfants de la sélection, par exemple https://jsfiddle.net/yz7tu49b/3/
Bien que j'ai tendance à éviter les propriétés DOM directes en faveur de jQuery de nos jours, au code à l'épreuve du temps, de sorte que cela pourrait également être fait comme https://jsfiddle.net/yz7tu49b/5/ :
Remarque 6 - utilisez change () pour déclencher la nouvelle sélection
Dans tous les cas ci-dessus, l'événement de modification ne se déclenche pas. Ceci est voulu par la conception afin que vous ne vous retrouviez pas avec des événements de changement récursifs.
Pour générer l'événement change, si nécessaire, ajoutez simplement un appel
.change()
à l'select
objet jQuery . Par exemple, le tout premier exemple le plus simple devient https://jsfiddle.net/yz7tu49b/7/Il existe également de nombreuses autres façons de trouver les éléments à l'aide de sélecteurs d'attributs
[value="SEL2"]
, mais vous devez vous rappeler que les sélecteurs d'attributs sont relativement lents par rapport à toutes ces autres options.la source
Vous pouvez nommer le sélectionner et l'utiliser:
Il doit sélectionner l'option souhaitée.
la source
la source
Répondre à ma propre question pour la documentation. Je suis sûr qu'il existe d'autres façons d'y parvenir, mais cela fonctionne et ce code est testé.
la source
Exactement, cela fonctionnera essayez les méthodes ci-dessous
la source
En utilisant jquery-2.1.4 , j'ai trouvé la réponse suivante pour travailler pour moi:
Si vous avez une valeur de chaîne, essayez ce qui suit:
D'autres exemples n'ont pas fonctionné pour moi, c'est pourquoi j'ajoute cette réponse.
J'ai trouvé la réponse originale sur: https://forum.jquery.com/topic/how-to-dynamically-select-option-in-dropdown-menu
la source
Pour définir la valeur de sélection avec le déclenchement sélectionné:
Pour définir l'option à partir d'une étendue:
Ce code utilise le sélecteur pour trouver l'objet sélectionné avec condition, puis modifiez l'attribut sélectionné par
attr()
.De plus, je recommande d'ajouter un
change()
événement après avoir défini l'attribut surselected
, ce faisant, le code se fermera à la sélection par l'utilisateur.la source
J'utilise ceci, quand je connais l'index de la liste.
Cela permet à la liste de changer et de déclencher l'événement de changement. Le ": nth (n)" compte à partir de l'index 0
la source
j'irai avec: -
la source
Essaye ça
vous utilisez simplement select field id au lieu de #id (c'est-à-dire # select_name)
au lieu de la valeur de l' option d' utiliser votre sélectionnez l' option valeur
la source
Pour Jquery choisi si vous envoyez l'attribut à la fonction et devez mettre à jour-sélectionner l'option
la source
la source
Le
$('select').val('the_value');
semble la bonne solution et si vous avez des lignes de table de données, alors:la source
si vous ne souhaitez pas utiliser jQuery, vous pouvez utiliser le code ci-dessous:
la source
Merci pour la question. J'espère que ce morceau de code fonctionnera pour vous.
la source
ou
la source