2010-07-14 42 views

回答

124

jQuery .val()

var foo = $('#multiple').val(); 
+59

有趣的回顧這些古老的問題,並多次選擇錯誤的答案。很明顯,這並沒有得到'價值',因爲OP要求像下面'正確'的答案。 – Tomas 2013-03-28 03:00:42

+7

像PyCharm這樣的IDE現在正在使用像這樣的用法,顯示諸如「低效的JQuery用法」這樣的警告,這導致我滾動查看此答案。 :o) – 2013-11-06 20:10:01

+0

不需要在函數內再次創建JQuery對象,這是毫無意義的,因爲您可以使用純JavaScript。只是做'foo [i] = selected.value;' – 2015-01-30 12:45:21

263

使用多選名單上的.val()函數將返回所選值的數組:

var selectedValues = $('#multipleSelect').val(); 

,並在你的HTML:

<select id="multipleSelect" multiple="multiple"> 
    <option value="1">Text 1</option> 
    <option value="2">Text 2</option> 
    <option value="3">Text 3</option> 
</select> 
+11

什麼如果u想要得到'文本的一些代碼?用'.text()'替換'.val()'? – 2013-09-06 06:17:47

+8

值得注意的是,沒有選中的多重選擇返回'null'而不是空數組。這意味着,如果您在編程時添加了一個選定的值,那麼您有一些雜耍來做正確的選擇。 – Leo 2014-05-22 16:50:33

+0

謝謝!有很多方法可以通過jQuery從元素中獲得價值,因此無法避免找到您需要的方式。 – 2014-06-13 14:59:58

8

您還可以使用js地圖功能:

$("#multipleSelect :selected").map(function(i, el) { 
    return $(el).val(); 
}); 

然後你就可以得到option元素的任何屬性:

return $(el).text(); 
return $(el).data("mydata"); 
return $(el).prop("disabled"); 
etc... 
+2

很好的答案,但不需要爲每個選項支付'el'作爲jQuery對象的額外開銷。當它不是太奇怪時,直接從DOM中直接走開。你可以把'$(el).val()'改爲'el.value'。當然,如果你習慣了jQuery或者想要像其他例子那樣獲取數據或屬性,jQuery不會傷害任何人。 – KyleMit 2015-08-14 20:42:26

+1

@KyleMit大提示。只是使用這種方法來獲取隱藏的字段值的集合,它的工作完美。 – EvilDr 2017-06-19 10:32:10

4
var selected=[]; 
$('#multipleSelect :selected').each(function(){ 
    selected[$(this).val()]=$(this).text(); 
    }); 
console.log(selected); 

另一個計算策略這個問題。所選數組將具有索引作爲選項值,並且每個數組項都將具有文本作爲其值。

例如

<select id="multipleSelect" multiple="multiple"> 
    <option value="abc">Text 1</option> 
    <option value="def">Text 2</option> 
    <option value="ghi">Text 3</option> 
</select> 

如果說選項1和2被選中。

選定陣列將是:

selected['abc']=1; 
selected['def']=2. 
2

HTML代碼:

<select id="multiple" multiple="multiple" name="multiple"> 
    <option value=""> -- Select -- </option> 
    <option value="1">Opt1</option> 
    <option value="2">Opt2</option> 
    <option value="3">Opt3</option> 
    <option value="4">Opt4</option> 
    <option value="5">Opt5</option> 
</select> 

jQuery代碼:

$('#multiple :selected').each(function(i, sel){ 
    alert($(sel).val()); 

}); 

希望工程

+7

不要「希望它有效」,如果你不確定它是否是答案,那麼測試一下,確定! – 2015-11-20 14:34:53

+4

如果你不確定的答案,那麼不要發佈它..!我們不在這裏希望.. !! LOL – 2015-12-03 13:16:57

+2

嘿。它完美的作品。一探究竟。你應該希望它。不要給無與倫比的評論.. – Prabhagaran 2015-12-17 11:19:31

0

在逗號分隔符獲取選定值

var Accessids = ""; 
$(".multi_select .btn-group>ul>li input:checked").each(function(i,obj) 
{ 
    Accessids=Accessids+$(obj).val()+","; 
}); 
Accessids = Accessids.substring(0,Accessids.length - 1); 
console.log(Accessids); 
0

只要使用這個

$('#multipleSelect').change(function() { 
    var selectedValues = $(this).val(); 
}); 
相關問題