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.