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


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()~~

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


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


9

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


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();

4

Anda bisa menggunakan jquerysebagai berikut

NASKAH

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

FIDDLE ada di sini


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();

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="".


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>

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

ATAU

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

ATAU

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

@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 ();


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

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());
        });
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.