jQuery ottiene il valore dell'opzione selezionata (non il testo, ma l'attributo 'valore')


156

Ok, ho questo codice:

<select name="selector" id="selector">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>

E vorrei ottenere il valore dell'opzione selezionata. Esempio: l'opzione 2 è selezionata e il suo valore è "2". "2" è il valore che devo ottenere e non "Opzione 2".


Esercitazione demo per ottenere: freakyjolly.com/… Esercitazione demo per l'impostazione di freakyjolly.com/… Selezioni singole e multiple
Codice spia

Risposte:


271

04/2020: vecchia risposta corretta

Usa : selettore psuedo selezionato sulle opzioni selezionate e quindi usa la funzione .val per ottenere il valore dell'opzione.

$('select[name=selector] option').filter(':selected').val()

Nota a margine : usare il filtro è meglio che usare il :selectedselettore direttamente nella prima query.

Se all'interno di un gestore modifiche, è possibile utilizzare semplicemente this.valueper ottenere il valore dell'opzione selezionata. Vedi la demo per ulteriori opzioni.

//ways to retrieve selected option and text outside handler
console.log('Selected option value ' + $('select option').filter(':selected').val()); 
console.log('Selected option value ' + $('select option').filter(':selected').text());

$('select').on('change', function () {
  //ways to retrieve selected option and text outside handler
  console.log('Changed option value ' + this.value);
  console.log('Changed option text ' + $(this).find('option').filter(':selected').text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<select>
  <option value="1" selected>1 - Text</option>
  <option value="2">2 - Text</option>
  <option value="3">3 - Text</option>
  <option value="4">4 - Text</option>
</select>

Vecchia risposta:

Modifica: come molti hanno sottolineato, questo non restituisce il valore dell'opzione selezionata.

~~ Usa .val per ottenere il valore dell'opzione selezionata. Vedi sotto,

$('select[name=selector]').val()~~

5
Fai il tuo test:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider

4
Se l'opzione selezionata non ha alcun valueattributo specificato, <option>label</option>verrà restituita l'etichetta (ovvero ). Potrebbe non essere sempre quello che vuoi. Naturalmente, nella maggior parte delle applicazioni, viene specificato il valore.
Czechnology,

115

Volevo solo condividere la mia esperienza

Per me,

$('#selectorId').val()

restituito null.

Ho dovuto usare

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


1
Quel caso specifico del browser? La versione più recente di Chrome non lo consente o è stato IE a non supportarlo?
Theodor Solbjørg

1
Era nella versione più recente di Chrome. Forse anche in Firefox, ma non ne sono sicuro.
David Torres,

Non sono sicuro del perché $('#selectorId option:selected').val()non abbia funzionato per me. Invece ho usato$('select option:selected').val()
Francisco Quintero il

1
@Francisco Il problema è che $('select option:selected').val()prenderà il valore del primo selettore nel codice HTML. Considerando che con $('#selectorId option:selected').val()te puoi avere il valore del selettore quale id hai specificato. Doppio controllo per errori di battitura. Ecco un esempio che mostra ciò che ho appena detto: codepen.io/anon/pen/Nqgqyz
David Torres,


9

Devi aggiungere un ID alla tua selezione. Poi:
$('#selectorID').val()


ho l'ID aggiunto, ho appena dimenticato di aggiungerlo qui.
n00b,

1
Da quello che ho letto usando un ID come selettore è il metodo più veloce.
Marcus,

5

Prova questo:

$(document).ready(function(){
    var data= $('select').find('option:selected').val();
});

o

var data= $('select').find('option:selected').text();

4

puoi usare jquerycome segue

SCRIPT

  $('#IDOfyourdropdown').change(function(){
    alert($(this).val());
  });

FIDDLE è qui


2

Per una selezione come questa

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option id="0">CHOOSE AN OPTION</option>
   <option id="127">John Doe</option>
   <option id="129" selected>Jane Doe</option>

... puoi ottenere l'id in questo modo:

$('#list-name option:selected').attr('id');

Oppure puoi usare il valore e ottenerlo nel modo più semplice ...

<select class="btn btn-info pull-right" id="list-name" style="width: auto;">
   <option value="0">CHOOSE AN OPTION</option>
   <option value="127">John Doe</option>
   <option value="129" selected>Jane Doe</option>

come questo:

$('#list-name').val();

2

Una delle mie opzioni non hanno un valore: <option>-----</option>. Stavo cercando di usare if (!$(this).val()) { .. }ma stavo ottenendo strani risultati. Risulta se non hai un valueattributo sul tuo <option>elemento, restituisce il testo al suo interno invece di una stringa vuota. Se non vuoi val()restituire nulla per la tua opzione, assicurati di aggiungere value="".


0

Guarda l'esempio:

    <select class="element select small" id="account_name" name="account_name"> 

        <option value="" selected="selected">Please Select</option>           
        <option value="paypal" >Paypal</option>
        <option value="webmoney" >Webmoney</option>

    </select>

 <script type="text/javascript">

        $(document).ready(function(){ 
             $('#account_name').change(function(){
               alert($(this).val());                                                          
             });
        });
 </script>

0
$('#selectorID').val();

O

$('select[name=selector]').val();

O

$('.class_nam').val();

@FarhadBagherlo "Continua a scrivere" non è un utile commento di modifica! Riassumi le modifiche in modo che i lettori della cronologia delle modifiche comprendano ciò che hai fatto senza ispezionare tutti i personaggi modificati. Grazie!
jpaugh,

0

questo codice funziona molto bene per me: questo restituisce il valore dell'opzione selezionata. $ ( '# Select_id') trovare ( 'opzione: selezionato') val ();..


0
 $(document ).ready(function() {
    $('select[name=selectorname]').change(function() { 
     alert($(this).val());});
 });

Sebbene questo codice possa risolvere il problema, è meglio aggiungere elaborazioni e spiegare come funziona per le persone che potrebbero non comprendere questo pezzo di codice.
paper1111,

@ paper1111 queste sono semplici funzioni. Posso spiegare se questo è necessario. $ ('select [nome = qui è il nome della casella di selezione]) .change () - significa che quando cambiamo la funzione di opzione della casella selezionata funzionerà. $ (this) .val () - restituisce il valore dell'opzione selezionata
Turan Zamanlı

0

Link alla fonte

Utilizzare jQuery val () per GET Valore e e selezionato il testo () per GET Opzioni Testo.

    <select id="myDropDown" class="form-control">
        <option value="0">Select Value 0</option>
        <option value="8">Option value 8</option>
        <option value="5">Option value 5</option>
        <option value="4">Option value 4</option>
    </select>

Cambia evento su Seleziona menu a discesa

        $("#myDropDown").change(function () {

            // Fetching Value
            console.log($(this).val());

            // Fetching Text
            console.log($(this).find('option:selected').text());

            alert('Value: '+$(this).val()+' | Text: '+$(this).find('option:selected').text());
        });

Fare clic sul pulsante

        $("button").click(function () {

        // Fetching Value
            console.log($("#myDropDown").val());

    // Fetching Text
            console.log($('#myDropDown option:selected').text());

            alert('Value: '+$("#myDropDown").val()+' | Text: '+$('#myDropDown option:selected').text());
        });
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.