Obtenez la valeur d'une liste déroulante dans jQuery

100

J'ai une liste déroulante qui a une paire «ID, nom».

Exemple

Jon Miller
Jim Smith
Jen Morsin

Jon MIller a un ID de 101
Jim Smith a un ID de 102
Jen Morsin a un ID de 103

Quand je fais ce qui suit:

var arNames = $('#Crd').val() 

et je sélectionne Jon Miller, j'obtiens 101. J'aimerais bien avoir Jon Miller.

Nate Pet
la source

Réponses:

185

$('#Crd').val()vous donnera la valeur sélectionnée de l'élément déroulant. Utilisez ceci pour obtenir le texte des options sélectionnées.

$('#Crd option:selected').text();
ShankarSangoli
la source
3
$ ('# Crd option: selected'). Text () ou $ ('# Crd option: selected'). Val (), .text vous donne la valeur du texte affiché, pas la valeur
patrick choi
$ ('# Option Crd: sélectionnée'). Val (); for value
asifaftab87
13

Le meilleur moyen est d'utiliser:

$("#yourid option:selected").text();

Selon les besoins, vous pouvez également utiliser cette méthode:

var v = $("#yourid").val();
$("#yourid option[value="+v+"]").text()
Sandeep Pal
la source
5

Si vous utilisez a <select>, .val()obtient la «valeur» du fichier sélectionné <option>. S'il n'a pas de value, il peut revenir au id. Mettez la valeur que vous souhaitez qu'il renvoie dans l' valueattribut de chaque<option>

Edit: Voir les commentaires pour clarifier ce valuequi est réellement (pas nécessairement égal à l' valueattribut).

Ansel Santosa
la source
1
Juste une clarification, .val () renvoie la propriété de valeur en direct et non la valeur d'attribut HTML.
Chad
Correct. Cependant, il n'y a pas de différence pratique dans ce cas car l'OP ne semble pas vouloir changer le values à aucun moment.
Ansel Santosa
2
.val() gets the 'value' attribute of the selected <option>, comme je l'ai dit: juste clarifier.
Chad
Que faire si j'ai besoin de l'index ou de l'identifiant plutôt que du texte?
bgmCoder
5

Cela a fonctionné pour moi!

$('#selected-option option:selected').val()

J'espère que cela aide quelqu'un!

N00b Pr0grammer
la source
3
var sal = $('.selectSal option:selected').eq(0).val();

selectSal est une classe.

Akanksha Singh
la source
3

Essaye ça:

var text = $('#YourDropdownId').find('option:selected').text();
Fereydoon Barikzehy
la source
2

Une autre option:

$("#<%=dropDownId.ClientID%>").children("option:selected").val();
user3166722
la source
0

Comme cela a été souligné ... dans une selectcase, l' .val()attribut vous donnera la valeur de l'option sélectionnée. Si l'option sélectionnée n'a pas d'attribut value, elle utilisera par défaut la valeur d'affichage de l'option (ce que les exemples de la documentation jQuery de.val show.

vous souhaitez utiliser .text()l'option sélectionnée:

$('#Crd option:selected').text()

Lhagemann
la source
0

Cela vous donne la valeur actuelle de la liste déroulante, si la liste déroulante a un ID de "someId".

$("#someId").val();
jeswin
la source
0

$('.leave_response').on('change', function() {
    var responseId = $(this).val();
    console.log(responseId);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<td>
    <select class="leave_response" name="leave">
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
    </select>
</td>

Yasas Malinga
la source
0

Passez l'identifiant et maintenez dans une variable et passez la variable où vous le souhaitez.

var temp = $ ('select [name = ID Name]'). val ();

Abhijit Patra
la source
$ ('sélectionnez l'option [nom = ID Nom]: sélectionnée'). val (); Celui-ci fonctionne également
Abhijit Patra