2009-08-03 8 views
122

Sto tentando di recuperare e impostare il valore selezionato di un elemento select (elenco a discesa) con jQuery.jQuery per recuperare e impostare il valore dell'opzione selezionata dell'elemento html select

per il retrievel ho provato $("#myId").find(':selected').val(), nonché $("#myId").val() ma entrambi restituiscono undefined.

Qualsiasi comprensione di questo problema sarebbe molto apprezzata.

grazie in anticipo

+0

se si utilizza asp .net, Id potrebbe non essere lo stesso una volta renderizzato! –

risposta

143

Il modo in cui si dispone che sia corretta in questo momento. O l'id della selezione non è quello che dici o hai alcuni problemi nella dom.

Verificare l'ID dell'elemento e controllare che il markup sia valido su here su W3c.

Senza un dom jQuery valido non può funzionare correttamente con i selettori.

se l'ID di correttezza e il tuo dom convalida vale quanto segue:

a leggere Select Value Option

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

to SET Selezionare Value Option

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

per leggere il testo selezionato

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

@ Html.DropDownList ("CoinTypes", (SelectList) ViewBag.RequiredLevel, new {@class = "form-control", @ style = "height: 21px; margin-top: 5px;"}) ma $ ('#CoinTypes') Val (@). ViewBag.CoinType; non sta selezionando –

+0

@NithinPaul non è un commento davvero, fai una domanda che mostra html così qualcuno può effettivamente provare e capire cosa c'è che non va. Non sei sicuro di come puoi aspettarti che qualcuno lo risolva da qualche codice webform/mvc! – redsquare

6

$('#myId').val() dovrebbe farlo, in mancanza di questo vorrei provare:

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

pulito, molto utile. Grazie! – thomasb

3

$("#myId").val() dovrebbe funzionare se myid è l'id di elemento select!

Questo sarebbe impostare la voce selezionata: $("#myId").val('VALUE');

248

per ottenere/impostare la proprietà effettiva selectedIndex del select uso elemento:

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

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

È importante notare che la funzione prop() è stata implementata nella versione 1.6, quindi le versioni precedenti non hanno questa funzionalità. – RobB

+18

Mi piace questa risposta perché in realtà risponde alla domanda di accesso all'indice, non solo al valore. –

+4

sì. Pensavo che fosse la domanda originale. –

1

si supponga di avere creato un elenco Drop Down utilizzando tag SELECT come come segue,

<select id="Country"> 

Ora, se si vuole vedere che cosa è il valore selezionato dal menu a discesa utilizzando jQuery quindi, in poche parole riga seguente al recuperare tale valore ..

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

funzionerà correttamente.

4

Quando si imposta con JQM, non dimenticare di aggiornare il UI:

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

Grazie per questo nugget - ci chiedevamo perché il nuovo valore non appare sullo schermo dopo aver cambiato l'indice selezionato con $ ("# scelta-slot"). Prop ("selectedIndex", n). –

0

So che questo è vecchio, ma ho appena avuto un orso di un tempo con il rasoio, non poteva farlo funzionare non importa quanto ci ho provato Restituito come "indefinito", non importa se ho usato "text" o "html" per attributo. Alla fine ho aggiunto l'attributo "data-value" all'opzione e l'ho letto bene.

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

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

$ ("opzione #myId: selezionata") .text(); ti darà il testo che hai selezionato nell'elemento a cascata. in entrambi i casi è possibile cambiarlo in .val(); per ottenere il valore di esso. controlla la codifica seguente

<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> 
Problemi correlati