<select> öğesinde seçilen <seçenek> metnini alma


156

Aşağıda:

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

JavaScript kullanarak seçilen seçeneğin metnini nasıl alabilirim (yani "Birini Test Et" veya "İki tane Test Et")

document.getElementsById('test').selectedValue 1 veya 2 değerini döndürürse, hangi özellik seçilen seçeneğin metnini döndürür?

Yanıtlar:


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

her zamanki gibi parlak javascript!
Doniyor

3
Bu cevap eski, güzel bir HTML5 tek katlı için @ davidjb'in cevabına bakın.
Christallkeks

1
@Christallkeks - hiçbir şey seçilmezse tek astar bir istisna atar . daha az satır her zaman daha iyi değildir.
Sean Bright

88

JQuery kullanıyorsanız, aşağıdaki kodu yazabilirsiniz:

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

30
metni istediğinden, muhtemelen daha iyi.text()
Muhd

5
Karıştırılmamalı $("#selectId option[selected]"), "seçili" özniteliği olan ancak şu anda seçilmemiş olabilecek seçeneği seçecektir.
mowwwalker

daha karmaşık görünüyor.!
NDEthos

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

Diğer tüm seçenekleri denedikten sonra da benim için çalıştı.
mimi

bu wordk mükemmel!
Albert Hidalgo

29

HTML5 altında bunu yapabilirsiniz:

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

MDN'nin https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement/selectedOptions adresindeki belgeleri, Chrome, Firefox, Edge ve mobil tarayıcılar dahil olmak üzere tam çapraz tarayıcı desteğini (en az Aralık 2017 itibarıyla) gösterir. , ancak Internet Explorer hariç.


+1, bu arada bu yol. Firefox bileti düzeltildi ve ben de desteklediğini doğrulamak için MS Edge'i açmayı bile rahatsız ettim.
Christallkeks


7

optionsMülkiyet içerdiği tüm <options>- Eğer orada bakabilirsiniz dan.text

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

6

selectedIndexSeçilen akımı almak için kullanabilirsiniz option:

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


2

Bu konuyu bulduysanız ve seçilen seçenek metnini olay yoluyla nasıl alacağınızı öğrenmek istiyorsanız, örnek kod şöyledir:

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

1

Kendi seçili seçenekler dizinini tanımlamak için seçim listesi nesnesini kullanın. Oradan - bu dizinin iç HTML'sini alın. Ve şimdi bu seçeneğin metin dizesine sahipsiniz.

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

Biraz açıklama ekle
HaveNoDisplayName

.innerHTMLtüm çocukları ve özelliklerini alır. Bir öğenin çocuğu olmadığında çalışırken, çocuklu bir öğeniz varsa amaçlanandan daha fazla geri döner.
hipkiss

1
<seçenek> Çocuklarınız </option> etiketleriniz arasında kaç tane "çocuk" olmasını bekliyorsunuz?
Creeperstanson

0

Düz javascript ile jQuery olmadan @artur'a benzer:

// @ Sean-bright'in "elt" değişkenini kullanma

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

0

Kolay, basit bir yol:

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

1
Bu kod snippet'i sorunu çözebilir, ancak soruyu neden veya nasıl yanıtladığını açıklamaz. Lütfen gönderinizin kalitesini artırmaya gerçekten yardımcı olduğu için kodunuz için bir açıklama ekleyin. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceğini unutmayın.
Luca Kiebel

Bunun nasıl kolay ya da basit olduğunu anlamıyorum. find()Seçilen öğenin dizinini zaten bildiğinizde neden kullanıyorsunuz ? Ayrıca, seçilen bir öğe ( <select multiple>) yoksa , bu bir hata oluşturur.
Sean Bright
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.