2009-08-03 8 views
122

Je tente de récupérer et de définir la valeur sélectionnée d'un élément de sélection (liste déroulante) avec jQuery. Pour le niveau de retrievel J'ai essayé $("#myId").find(':selected').val(), ainsi que $("#myId").val() mais les deux retournent indéfini.jQuery pour récupérer et définir la valeur d'option sélectionnée de l'élément de sélection html

Tout aperçu de ce problème serait grandement apprécié.

merci à l'avance

+0

Si vous utilisez asp.net, leur Id peut ne pas être le même une fois rendu! –

Répondre

143

La façon dont vous avez est correct pour le moment. Soit l'identifiant du select n'est pas ce que vous dites, soit vous avez des problèmes dans le dom.

Vérifiez l'ID de l'élément et vérifiez également que votre balisage est validé à here à W3c.

Sans dom val jQuery ne peut pas fonctionner correctement avec les sélecteurs.

Si les ID sont corrects et que votre dom valide alors ce qui suit applique:

Pour lire Sélectionnez l'option Valeur

$('#selectId').val(); 

Réglage Sélectionnez l'option Valeur

$('#selectId').val('newValue'); 

Pour lire le texte sélectionné

$('#selectId>option:selected').text(); 
+0

@ Html.DropDownList ("CoinTypes", (SelectList) ViewBag.RequiredLevel, nouveau {@class = "form-control", @ style = "hauteur: 21px; margin-top: 5px;"}) mais $ ('#CoinTypes'). Val (@ ViewBag.CoinType); ne sélectionne pas –

+0

@NithinPaul pas vraiment un commentaire, posez une question qui montre html afin que quelqu'un puisse réellement essayer de trouver ce qui ne va pas. Je ne sais pas comment vous pouvez vous attendre à ce que tout le monde travaille à partir de certains webforms/code mvc! – redsquare

6

$('#myId').val() devrait le faire, à défaut que je voudrais essayer:

$('#myId option:selected').val() 
+0

propre, très utile. Merci! – thomasb

3

$("#myId").val() devrait fonctionner si myid est l'identifiant de l'élément select!

Cela fixerait l'élément sélectionné: $("#myId").val('VALUE');

248

pour obtenir/définir la propriété selectedIndex réelle de l'utilisation des éléments de sélection:

$("#select-id").prop("selectedIndex"); 

$("#select-id").prop("selectedIndex",1); 
+19

Il est important de noter que la fonctionnalité prop() a été implémentée dans la version 1.6, donc les versions antérieures n'ont pas cette fonctionnalité. – RobB

+18

J'aime cette réponse parce qu'elle répond à la question de l'accès à l'index, pas seulement à la valeur. –

+4

oui. Je pensais que c'était la question originale. –

1

Supposons que vous avez créé une liste déroulante en utilisant balise SELECT comme en suit,

<select id="Country"> 

maintenant, si vous voulez voir quelle est la valeur sélectionnée dans le menu déroulant à l'aide JQuery puis, il suffit de mettre la ligne suivante à récupérer cette valeur ..

var result= $("#Country option:selected").text(); 

cela fonctionnera bien.

4

Lors de la configuration avec JQM, ne pas oublier de mettre à jour le UI:

$('#selectId').val('newValue').selectmenu('refresh', true); 
+0

Merci pour ce nugget - se demandait pourquoi la nouvelle valeur n'apparaît pas à l'écran après avoir modifié l'index selected avec $ ("# slot-choice"). Prop ("selectedIndex", n). –

0

Je sais que c'est vieux, mais je viens d'avoir un ours d'un temps avec Razor, ne pouvait pas le faire fonctionner, peu importe comment dur j'ai essayé. Retenu revenant comme "indéfini" peu importe si j'ai utilisé "texte" ou "html" pour l'attribut. Enfin, j'ai ajouté l'attribut "data-value" à l'option et il a très bien lu.

<option value="1" data-value="MyText">MyText</option> 

var DisplayText = $(this).find("option:selected").attr("data-value"); 
0

$ ("Option #myId: selected") .text(); vous donnera le texte que vous avez sélectionné dans l'élément déroulant. de toute façon, vous pouvez le changer en .val(); pour en avoir la valeur. vérifier le codage ci-dessous

<select id="myId"> 
    <option value="1">Mr</option> 
    <option value="2">Mrs</option> 
    <option value="3">Ms</option>` 
    <option value="4">Dr</option> 
    <option value="5">Prof</option> 
</select> 
Questions connexes