2012-04-17 37 views
1

HTML選擇值

<select id="selectDepartment"> 
    <option value="1">120</option> 
    <option value="2">20</option> 
    <option value="3">140</option> 
    <option value="4">4120</option> 
    <option value="5">560</option> 
    <option value="6">451</option> 
    <option value="7">310</option> 
    <option value="8">656</option> 
    <option value="9">444</option> 
    <option value="10">555</option> 
    <option value="11">2560</option> 
    <option value="12">450</option> 
</select> 

jQuery的

$("#selectDepartment").change(function() { 

alert($("select option:selected").val()); 

}); 

上述功能總是顯示值警惕,當我選擇的選項

任何一個
+2

嘗試改變'$( 「選擇選項:選擇」)''到$( 「選項:選擇」,這一點)'。 '$(「select option:selected」)'會抓取頁面上的第一個選擇,這可能不是你想要的。 – 2012-04-17 18:33:34

+0

請參閱:http://jsfiddle.net/Rdh3Q/ ...似乎很好.. – 2012-04-17 18:34:39

+0

@MarcoJohannesen:嘗試[此版本](http://jsfiddle.net/Rdh3Q/1/)。 – 2012-04-17 18:44:18

回答

5

您找到選擇的方法選項是模糊的。你的意思是「抓住所有<select>」。然後,您繼續從其中的每個人(頁面上的所有<select> s)獲取:select ed選項。續,.val()取第一個值。

簡而言之,您總是獲取在頁面上找到的第一個<select>的選定值。假設#selectDepartment不是第一個<select>,你的價值永遠不會改變。

儘量範圍繼續使用this當前<Select>內:

$('#selectDepartment').change(function(){ 
    var selopt = $('option:selected',this); 
}); 

注意,我指定的範圍,以觸發.change()<select>內。還應注意這個真的是沒有必要的,因爲val()作品一樣容易:

var selopt = $(this).val(); 

讓jQuery的做繁重。如果您想控制特定元素的樣式,或者您正在使用多重選擇並希望獲得更多控制權,則只需要option:selected即可。

+1

只需添加,'.text()'會爲您提供所選選項的文本。 – 2012-04-17 18:38:47

0

你可以做這樣的事情:

$("#selectDepartment").change(function() { 

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

});