Mengambil teks dari <option> yang dipilih di elemen <select>


156

Berikut ini:

<select id="test">
    <option value="1">Test One</option>
    <option value="2">Test Two</option>
</select>

Bagaimana saya bisa mendapatkan teks dari opsi yang dipilih (yaitu "Test One" atau "Test Two") menggunakan JavaScript

document.getElementsById('test').selectedValue mengembalikan 1 atau 2, properti apa yang mengembalikan teks dari opsi yang dipilih?

Jawaban:


258
function getSelectedText(elementId) {
    var elt = document.getElementById(elementId);

    if (elt.selectedIndex == -1)
        return null;

    return elt.options[elt.selectedIndex].text;
}

var text = getSelectedText('test');

javascript brilian seperti biasa!
doniyor

3
Jawaban ini sudah usang, lihat jawaban @ davidjb di bawah ini untuk HTML5 one-liner yang bagus.
Christallkeks

1
@ Christallkeks - one-liner melempar pengecualian jika tidak ada yang dipilih . lebih sedikit garis tidak selalu lebih baik.
Sean Bright

88

Jika Anda menggunakan jQuery maka Anda dapat menulis kode berikut:

$("#selectId option:selected").html();

30
karena dia ingin teks, mungkin lebih baik untuk digunakan.text()
Muhd

5
Jangan bingung $("#selectId option[selected]"), yang akan memilih opsi yang memiliki atribut "terpilih" tetapi saat ini mungkin tidak dipilih.
mowwwalker

sepertinya lebih rumit.!
NDEthos

54
document.getElementById('test').options[document.getElementById('test').selectedIndex].text;

Ini juga berhasil bagi saya, setelah mencoba semua opsi lain.
mimi

wordk ini sempurna!
Albert Hidalgo

29

Di bawah HTML5 Anda dapat melakukan ini:

document.getElementById('test').selectedOptions[0].text

Dokumentasi MDN di https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedOptions menunjukkan dukungan lintas-browser penuh (paling tidak Desember 2017), termasuk Chrome, Firefox, Edge dan browser ponsel , tetapi tidak termasuk Internet Explorer.


+1, sementara ini adalah jalannya. Tiket Firefox sudah diperbaiki dan saya bahkan repot-repot membuka MS Edge untuk memverifikasi bahwa mereka mendukungnya juga.
Christallkeks


7

The optionsproperti berisi semua <options>- dari sana Anda dapat melihat.text

document.getElementById('test').options[0].text == 'Text One'

6

Anda dapat menggunakan selectedIndexuntuk mengambil yang dipilih saat ini option:

el = document.getElementById('elemId')
selectedText = el.options[el.selectedIndex].text


2

Jika Anda menemukan utas ini dan ingin tahu cara mendapatkan teks opsi yang dipilih melalui acara di sini adalah kode contoh:

alert(event.target.options[event.target.selectedIndex].text);

1

Gunakan objek daftar pilih, untuk mengidentifikasi indeks opsi yang dipilih sendiri. Dari sana - ambil HTML bagian dalam indeks itu. Dan sekarang Anda memiliki string teks dari opsi itu.

<select onchange="alert(this.options[this.selectedIndex].innerHTML);">
       <option value="">Select Actions</option>
       <option value="1">Print PDF</option>
       <option value="2">Send Message</option>
       <option value="3">Request Review</option>
       <option value="4">Other Possible Actions</option>
    </select>

Tambahkan beberapa penjelasan
HaveNoDisplayName

.innerHTMLmendapat semua anak dan atribut mereka. Sementara itu berfungsi ketika suatu elemen tidak memiliki anak, jika Anda memiliki elemen dengan anak-anak, ia mengembalikan lebih dari yang dimaksudkan.
hipkiss

1
Berapa banyak "anak-anak" yang Anda harapkan memiliki di antara tag <option> Anak-anak Anda? </option>?
Creeperstanson

0

Mirip dengan @artur tanpa jQuery, dengan javascript biasa:

// Menggunakan variabel "elt" @ Sean-bright

var selection=elt.options[elt.selectedIndex].innerHTML;

0

Cara mudah dan sederhana:

const select = document.getElementById('selectID');
const selectedOption = [...select.options].find(option => option.selected).text;

1
Meskipun potongan kode ini dapat menyelesaikan masalah, itu tidak menjelaskan mengapa atau bagaimana ia menjawab pertanyaan. Harap sertakan penjelasan untuk kode Anda , karena itu sangat membantu untuk meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa depan, dan orang-orang itu mungkin tidak tahu alasan untuk saran kode Anda.
Luca Kiebel

Saya tidak melihat bagaimana ini mudah atau sederhana. Mengapa Anda menggunakan find()ketika Anda sudah tahu indeks item yang dipilih? Juga, jika tidak ada item yang dipilih ( <select multiple>), ini akan menghasilkan kesalahan.
Sean Bright
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.