2012-07-30 96 views
0

我想做一些非常簡單的事情,但它不適合我。所有我想做的事時,所選擇的選項改變時獲得所選選項的文本,這樣的事情:獲取選定的選項文本

<select id = "myselect"> 
    <option value = "1">One</option> 
    <option value = "2">Two</option> 
    <option value = "3">Three</option> 
</select> 

然後在JavaScript:

$("#myselect").change(function() { 
    var text = $(this).find("option[selected]").html(); 
    alert(text); 
}); 

簡單吧?問題是我只是空。當我檢查DOM時,我發現改變選擇的選項不會改變任何選項的「selected」屬性。不更改選項通常更新DOM?我很確定我以前做過這個。我在這裏錯過了什麼?我正在使用FireFox ver 13.0.1進行測試。

回答

3

這應該使用jQuery做:

$("#myselect").change(function() { 
    var text = $(':selected',this).text(); 
    alert(text); 
});​ 

jsFiddle example

或者,如果你想使用只是簡單的JavaScript:

document.getElementById('myselect').onchange = function() { 
    alert(document.getElementById("myselect")[document.getElementById("myselect").selectedIndex].innerHTML); 
} 

jsFiddle example

+0

+1而不是它應該是'的.text()''不html的()'? – iambriansreed 2012-07-30 18:59:29

+0

@anonymousdownvotingislame - 要麼工作。從技術上講,選項元素無論如何都不能使用HTML,但是再次,兩者都有效。我會更新代碼。 – j08691 2012-07-30 19:00:25

2

您想使用:selected選擇器。退房的例子here

$('#myselect').change(function() { 
    var text = $(this).children('option:selected').text(); 
    alert(text); 
}); 

現場演示:http://jsfiddle.net/xjhFf/

0

可以使用selectedIndex屬性和它的索引檢索項目。

2
$(this).find("option:selected").html(); 
2

變化

var text = $(this).find("option:selected").html();