2010-07-14 36 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(); 
}); 
相关问题