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.