如何使用jQuery获取多个选择框值?


Answers:



291

.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
如果您想获得Text 1价值而不是价值怎么办?替换.val().text()
拉扎·艾哈迈德

9
值得注意的是,没有选择任何内容的多重选择将返回null而不是一个空数组。这意味着,如果您要以编程方式添加选定的值,则需要花点时间才能使其正确设置。
狮子座

谢谢!使用jQuery从元素中获取价值的方法有很多,以至于很难找到您要寻找的方法。
查尔斯·伍德

5
@Leo您可以添加一个合并对象来解决null问题,例如,var selectedValues = $('#multipleSelect').val() || []; 还值得注意的是它返回字符串数组。我正在与整数进行比较,但没有匹配项,因此我添加了.toString()
tkerwood

16

您还可以使用js map函数:

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

然后,您可以获取option元素的任何属性:

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

2
很好的答案,但无需el为每个选项都花额外费用将其包装为jQuery对象。当它不太奇怪时,就直接离开DOM。您可以更改$(el).val()为just el.value。当然,如果您习惯使用jQuery或想像其他示例一样获取数据或属性,则jQuery不会伤害任何人。
KyleMit 2015年

1
@KyleMit大提示。只是使用这种方法来获取隐藏字段值的集合,并且效果很好。
EvilDr

12
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.

5

只需一行

var select_button_text = $('#SelectQButton option:selected')
                .toArray().map(item => item.text);

输出:[“ text1”,“ text2”]

var select_button_text = $('#SelectQButton option:selected')
                .toArray().map(item => item.value);

输出:[“ value1”,“ value2”]

如果使用.join()

var select_button_text = $('#SelectQButton option:selected')
                .toArray().map(item => item.text).join();

输出:text1,text2,text3


4

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() ); 

});

希望它能起作用


13
不要“希望它能起作用”,如果您不确定这是否是答案,请进行测试并确定!
Sterling Archer 2015年

6
如果您不确定答案,请不要发布它。我们不是在这里希望..!LOL
克兰河Dsilva

3
嗨,老兄。完美运作。看看这个。您应该希望它。不要给无关紧要评论..
Prabhagaran

2
这是jQuery的低效用法。更好的方法是使用这样的ID选择器$('#multiple').find(':selected')作为
开头

@YounisShah我很难说它是“低效率的”,因为时差是相对论没什么……
NorCalKnockOut

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);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.