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.