jQuery mendapatkan nilai opsi yang dipilih (bukan teks, tetapi atribut 'nilai')

156

Oke, saya punya kode ini:

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

Dan saya ingin mendapatkan nilai opsi yang dipilih. Contoh: 'Opsi 2' dipilih, dan nilainya adalah '2'. '2' adalah nilai yang saya butuhkan dan bukan 'Opsi 2'.

n00b
sumber
Demo tutorial untuk Mendapatkan: freakyjolly.com/... Tutorial demo untuk Setting freakyjolly.com/... Single dan Beberapa Selectbox
Code Spy

Jawaban:

271

04/2020: Jawaban lama terkoreksi

Gunakan : pemilih psuedo yang dipilih pada opsi yang dipilih dan kemudian gunakan fungsi .val untuk mendapatkan nilai opsi.

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

Catatan samping : Menggunakan filter lebih baik daripada menggunakan :selectedpemilih langsung di permintaan pertama.

Jika di dalam change handler, Anda bisa menggunakan hanya this.valueuntuk mendapatkan nilai opsi yang dipilih. Lihat demo untuk opsi lainnya.

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

Jawaban lama:

Sunting: Seperti yang banyak ditunjukkan, ini tidak mengembalikan nilai opsi yang dipilih.

~~ Gunakan .val untuk mendapatkan nilai opsi yang dipilih. Lihat di bawah,

$('select[name=selector]').val()~~
Selvakumar Arumugam
sumber
5
Lakukan tes Anda:$('select[name=selector]').change(function() { alert($(this).val()); });
KingRider
4
Perhatikan bahwa jika opsi yang dipilih tidak memiliki valueatribut yang ditentukan, label (yaitu <option>label</option>) akan dikembalikan. Mungkin tidak selalu seperti yang Anda inginkan. Tentu saja, di sebagian besar aplikasi, nilai ditentukan.
Czechnology
115

Saya hanya ingin berbagi pengalaman

Untuk saya,

$('#selectorId').val()

dikembalikan nol.

Saya harus menggunakan

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

David Torres
sumber
1
Apakah itu kasus khusus browser? Apakah versi terbaru dari chrome tidak mengizinkannya, atau apakah IE yang tidak mendukungnya?
Theodor Solbjørg
1
Itu dalam versi terbaru Chrome. Mungkin juga di Firefox, tetapi tidak yakin.
David Torres
Tidak yakin mengapa $('#selectorId option:selected').val()tidak berhasil untuk saya. Sebaliknya saya menggunakan$('select option:selected').val()
Francisco Quintero
1
@ Francisco Masalahnya adalah bahwa $('select option:selected').val()akan mengambil nilai pemilih pertama dalam kode HTML. Sedangkan dengan $('#selectorId option:selected').val()Anda dapat memiliki nilai pemilih yang id Anda tentukan. Periksa kembali kesalahan pengetikan. Berikut adalah contoh yang menunjukkan apa yang saya katakan: codepen.io/anon/pen/Nqgqyz
David Torres
22
$('select').change(function() {
    console.log($(this).val())
});​

contoh jsFiddle

.val() akan mendapatkan nilai.

j08691
sumber
9

Anda perlu menambahkan id ke pilih Anda. Kemudian:
$('#selectorID').val()

Marcus
sumber
saya memiliki id yang ditambahkan, hanya lupa untuk menambahkannya di sini.
n00b
1
Dari apa yang saya baca menggunakan ID sebagai pemilih adalah metode tercepat.
Marcus
5

Coba ini:

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

atau

var data= $('select').find('option:selected').text();
Payal Mittal
sumber
4

Anda bisa menggunakan jquerysebagai berikut

NASKAH

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

FIDDLE ada di sini

Usman
sumber
2

Untuk pilih seperti ini

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

... Anda bisa mendapatkan id dengan cara ini:

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

Atau Anda dapat menggunakan nilai sebagai gantinya, dan mendapatkannya dengan cara mudah ...

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

seperti ini:

$('#list-name').val();
Geziel Carvalho
sumber
2

Salah satu pilihan saya tidak memiliki nilai: <option>-----</option>. Saya mencoba menggunakan if (!$(this).val()) { .. }tetapi saya mendapatkan hasil yang aneh. Ternyata jika Anda tidak memiliki valueatribut pada <option>elemen Anda , itu mengembalikan teks di dalamnya daripada string kosong. Jika Anda tidak ingin val()mengembalikan apa pun untuk opsi Anda, pastikan untuk menambahkan value="".

Gavin
sumber
0

Lihat contohnya:

    <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>
JH_
sumber
0
$('#selectorID').val();

ATAU

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

ATAU

$('.class_nam').val();
Saddam Khan
sumber
@FarhadBagherlo "Terus mengetik" bukanlah komentar edit yang bermanfaat! Harap rangkum perubahan Anda, sehingga pembaca riwayat edit memahami apa yang telah Anda lakukan tanpa memeriksa setiap karakter yang diubah. Terima kasih!
jpaugh
0

kode ini bekerja sangat baik untuk saya: ini mengembalikan nilai opsi yang dipilih. $ ('# select_id'). find ('option: selected'). val ();

Abolfazl Miadian
sumber
0
 $(document ).ready(function() {
    $('select[name=selectorname]').change(function() { 
     alert($(this).val());});
 });
Turan Zamanlı
sumber
Meskipun kode ini dapat menyelesaikan masalah, yang terbaik adalah menambahkan elaborasi dan menjelaskan cara kerjanya untuk orang-orang yang mungkin tidak memahami bagian kode ini.
paper1111
@ paper1111 ini adalah fungsi sederhana. Saya bisa menjelaskan apakah ini diperlukan. $ ('select [name = here is select box name]) .change () - artinya artinya ketika kita mengubah fungsi pilih kotak pilih akan berfungsi. $ (ini) .val () - mengembalikan nilai opsi yang dipilih
Turan Zamanlı
0

Tautan Sumber

Gunakan jQuery val () untuk DAPATKAN Nilai yang Dipilih dan dan teks () untuk DAPATKAN Teks Opsi.

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

Ubah Acara pada Select Dropdown

        $("#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());
        });

Klik tombol

        $("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());
        });
Kode Mata-mata
sumber