Obtenha o valor de um menu suspenso no jQuery

100

Eu tenho uma lista suspensa que tem um par 'ID, Nome'.

Exemplo

Jon Miller
Jim Smith
Jen Morsin

Jon MIller tem ID 101
Jim Smith tem ID 102
Jen Morsin tem ID 103

Quando eu faço o seguinte:

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

e eu seleciono Jon Miller, ganho 101. Gostaria de obter Jon Miller, no entanto.

Nate Pet
fonte

Respostas:

185

$('#Crd').val()fornecerá o valor selecionado do elemento suspenso. Use isto para obter o texto das opções selecionadas.

$('#Crd option:selected').text();
ShankarSangoli
fonte
3
$ ('# Crd option: selected'). Text () ou $ ('# Crd option: selected'). Val (), .text fornece o valor do texto exibido, não o valor
patrick choi
$ ('# Opção Crd: selecionada'). Val (); para valor
asifaftab87
13

A melhor maneira é usar:

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

Dependendo do requisito, você também pode usar desta forma:

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

Se você estiver usando um <select>, .val()obtém o 'valor' do selecionado <option>. Se não tiver um value, ele pode retornar ao id. Coloque o valor que você deseja que ele retorne no valueatributo de cada<option>

Editar: Ver comentários para esclarecimentos sobre o que valuerealmente é (não necessariamente igual ao valueatributo).

Ansel Santosa
fonte
1
Apenas para esclarecer, .val () retorna a propriedade do valor ao vivo, não o valor do atributo HTML.
Chad
Corrigir. No entanto, não há diferença prática neste caso, pois o OP não parece querer alterar os values em nenhum momento.
Ansel Santosa
2
.val() gets the 'value' attribute of the selected <option>, como eu disse: apenas esclarecendo.
Chad
E se eu precisar do índice ou id em vez do texto?
bgmCoder
5

Isso tem funcionado para mim!

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

Espero que isso ajude alguém!

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

selectSal é uma classe.

Akanksha Singh
fonte
3

Experimente isto:

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

Outra opção:

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

Como foi apontado ... em uma selectcaixa, o .val()atributo fornecerá o valor da opção selecionada. Se a opção selecionada não tiver um atributo de valor, ela será padronizada para o valor de exibição da opção (que é o que os exemplos na documentação do jQuery.val mostram .

você deseja usar .text()a opção selecionada:

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

lhagemann
fonte
0

Isso fornece o valor atual do menu suspenso, se o menu suspenso tiver um ID de "someId".

$("#someId").val();
jeswin
fonte
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
fonte
0

Passe o id e mantenha em uma variável e passe a variável onde quiser.

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

Abhijit Patra
fonte
$ ('select [name = ID Name] opção: selecionado'). val (); Este também funciona
Abhijit Patra