2009-03-04 3 views
127

Trong điều sau đây:Lấy nội dung của chọn <option> trong <select> yếu tố

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

Làm thế nào tôi có thể nhận được nội dung của phương án chọn (tức là "Test One" hoặc "thử nghiệm thứ hai") sử dụng JavaScript

document.getElementsById('test').selectedValue trả về 1 hoặc 2, thuộc tính nào trả về văn bản của tùy chọn đã chọn?

Trả lời

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

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

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

var text = getSelectedText('test'); 
+0

javascript rực rỡ như mọi khi! – doniyor

+0

Câu trả lời này đã lỗi thời, hãy xem câu trả lời của @ davidjb dưới đây để có một lớp lót HTML5 đẹp mắt. – Christallkeks

5

Thuộc tính options chứa tất cả các <options> - từ đó bạn có thể nhìn vào .text

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

Nếu bạn sử dụng jQuery sau đó bạn có thể viết đoạn mã sau:

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

vì anh ta muốn văn bản, có lẽ tốt hơn để sử dụng '.text() ' – Muhd

+5

Không được nhầm lẫn với' $ ("# selectId option [selected]") ', sẽ chọn tùy chọn có thuộc tính" selected "nhưng có thể không được chọn. – mowwwalker

+0

có vẻ phức tạp hơn.! – NDEthos

42
document.getElementById('test').options[document.getElementById('test').selectedIndex].text; 
+1

Nó hoạt động, cảm ơn! – Angelinux

-1

Tương tự như @artur mà không cần jQuery, với javascript đơn giản:

// Sử dụng @ Sean sáng của "ELT" biến

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

Dưới HTML5 bạn sẽ có thể để làm điều này:

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

Tuy nhiên, hỗ trợ trình duyệt đang thiếu hiện nay. Chrome 27 (hiện tại vào thời điểm viết bài) hỗ trợ điều này, nhưng, hãy xem lỗi nổi bật cho Mozilla https://bugzilla.mozilla.org/show_bug.cgi?id=596681 cho biết hiện tại không có lỗi.

+0

+1, trong khi đó đây là con đường để đi. Vé Firefox được sửa và tôi thậm chí còn băn khoăn khi mở MS Edge để xác minh rằng họ cũng hỗ trợ nó. – Christallkeks

20
selectElement.options[selectElement.selectedIndex].text; 

Tài liệu tham khảo:

+0

Dễ hiểu hơn câu trả lời mà @wormhit đưa ra. 1 để đơn giản hóa –

1

Nếu bạn thấy điều này chủ đề và muốn biết cách nhận tùy chọn đã chọn văn bản thông qua sự kiện ở đây là mẫu mã:

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

this.options [this.selectedIndex] .innerText

1

Sử dụng chọn đối tượng danh sách, để xác định chỉ số tùy chọn đã chọn riêng của mình. Từ đó - lấy HTML bên trong của chỉ mục đó. Và bây giờ bạn có chuỗi văn bản của tùy chọn đó.

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

Thêm một số giải thích – HaveNoDisplayName

+0

'.HTMLHTML' nhận tất cả trẻ em và thuộc tính của chúng. Trong khi nó hoạt động khi một yếu tố không có con, nếu bạn có một yếu tố với trẻ em nó trở về cách nhiều hơn là dự định. – hipkiss

+1

Bạn dự định có bao nhiêu "con" ở giữa số thẻ? – Creeperstanson

0

Bạn có thể sử dụng selectedIndex để lấy được lựa chọn hiện tại option:

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