2012-07-30 92 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();