jQuery per recuperare e impostare il valore dell'opzione selezionata dell'elemento html select


126

Sto tentando di recuperare e impostare il valore selezionato di un elemento selezionato (elenco a discesa) con jQuery.

per il recupero ho provato $("#myId").find(':selected').val(), $("#myId").val()ma entrambi restituiscono indefinito.

Qualsiasi approfondimento su questo problema sarebbe molto apprezzato.


se usi asp .net, potrebbero non essere gli stessi una volta resi!
Rigobert Song,

Risposte:


154

Il modo in cui lo hai è corretto al momento. O l'id della selezione non è quello che dici o hai dei problemi nel dom.

Controlla l'ID dell'elemento e verifica anche la convalida del markup qui su W3c.

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

Se l'id è corretto e il tuo dominio è valido, si applica quanto segue:

Per leggere selezionare l'opzione Valore

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

Per impostare Seleziona valore opzione

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

Per leggere il testo selezionato

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

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

@NithinPaul in realtà non è un commento, fai una domanda che mostra html in modo che qualcuno possa effettivamente provare a capire cosa c'è che non va. Non sei sicuro di come puoi aspettarti che qualcuno lo risolva da alcuni moduli web / codice mvc!
redsquare il

248

per ottenere / impostare l'effettiva proprietà selectedIndex dell'elemento select usare:

$("#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.
Pablo Diaz,

4
sì. Ho pensato che fosse la domanda originale.
Jack Holt,

Probabilmente potresti anche usare attr con la stessa sintassi ed essere a posto.
Yitzhak,

7
@ M.YitzhakSamuel .attr()e .prop()non sono sinonimi. Funzionerà in alcuni casi in cui un attributo è anche una proprietà, ad esempio .attr('id')è uguale a .prop('id'). In questo caso, .prop('selectedIndex')è uguale a .get(0).selectedIndex.
WynandB,

7

$('#myId').val() dovrei farlo, non riuscendo a provare:

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

4

Durante l'impostazione con JQM, non dimenticare di aggiornare UI:

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

Grazie per questo nugget - mi chiedevo perché il nuovo valore non venisse visualizzato sullo schermo dopo aver cambiato il valore selezionatoIndex con $ ("# slot-choice"). Prop ("selectedIndex", n).
Samik R,

3

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

Ciò imposterebbe l'elemento selezionato: $("#myId").val('VALUE');


1

Supponiamo di aver creato un elenco a discesa utilizzando il tag SELECT come segue,

<select id="Country">

Ora, se vuoi vedere qual è il valore selezionato dal menu a discesa usando JQuery, metti semplicemente la seguente riga per recuperare quel valore.

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

funzionerà benissimo.


0

So che questo è vecchio, ma ho avuto un po 'di tempo con Razor, non sono riuscito a farlo funzionare, non importa quanto ci abbia provato. Ho continuato a tornare come "indefinito", non importa se ho usato "testo" o "html" per l'attributo. Alla fine ho aggiunto l'attributo "valore-dati" all'opzione e ho letto bene.

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

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

0

$ ("Opzione #myId: selezionato") .text (); ti darà il testo che hai selezionato nell'elemento a discesa. in entrambi i casi è possibile modificarlo in .val (); per ottenerne il valore. controlla la seguente codifica

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.