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

DEV*_*OPS 148 jquery multi-select

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

Dar*_*rov 283

使用.val()多选列表上的函数将返回所选值的数组:

var selectedValues = $('#multipleSelect').val();
Run Code Online (Sandbox Code Playgroud)

在你的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>
Run Code Online (Sandbox Code Playgroud)

  • 如果你想得到"文字1"而不是价值怎么办?用`.text()`替换`.val()`? (11认同)
  • 值得注意的是,没有选择的多重选择返回"null"而不是空数组.这意味着如果你以编程方式_adding_一个选定的值,那么你需要做一些努力才能做到正确. (9认同)
  • @Leo你可以添加一个coalesc来解决null问题,例如`var selectedValues = $('#multipleSelect').val()|| [];`另外值得注意的是它返回一个字符串数组.我正在比较一个整数并且没有匹配,所以我添加了一个`.toString()`. (5认同)

kpu*_*ll1 14

你也可以使用js map函数:

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

然后你可以获得option元素的任何属性:

return $(el).text();
return $(el).data("mydata");
return $(el).prop("disabled");
etc...
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,但没有必要支付额外费用包装`el`作为每个选项的jQuery对象.当它不太奇怪时,直接离开DOM.你可以将`$(el).val()`改为`el.value`.当然,如果你习惯于jQuery或想要像其他例子一样获取数据或属性,那么jQuery不会伤害任何人. (2认同)

小智 9

var selected=[];
 $('#multipleSelect :selected').each(function(){
     selected[$(this).val()]=$(this).text();
    });
console.log(selected);
Run Code Online (Sandbox Code Playgroud)

又是这个问题的另一个问题.所选数组将索引作为选项值,每个数组项将以文本作为其值.

例如

<select id="multipleSelect" multiple="multiple">
    <option value="abc">Text 1</option>
    <option value="def">Text 2</option>
    <option value="ghi">Text 3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如果选择选项1和2.

选定的数组将是:

selected['abc']=1; 
selected['def']=2.
Run Code Online (Sandbox Code Playgroud)


小智 9

就在一行——

var select_button_text = $('#SelectQButton option:selected')
                .toArray().map(item => item.text);
Run Code Online (Sandbox Code Playgroud)

输出:["text1", "text2"]

var select_button_text = $('#SelectQButton option:selected')
                .toArray().map(item => item.value);
Run Code Online (Sandbox Code Playgroud)

输出:["value1", "value2"]

如果你使用 .join()

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

输出:文本 1、文本 2、文本 3


Pra*_*ran 5

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>   
Run Code Online (Sandbox Code Playgroud)

查询代码:

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

});
Run Code Online (Sandbox Code Playgroud)

希望它有效

  • 嗨,老兄。它完美地工作。一探究竟。你应该希望它。不要发表无关紧要的评论.. (3认同)
  • 这是 jQuery 的低效用法。更好的方法是使用这样的 ID 选择器作为序言:`$('#multiple').find(':selected')` @Prabhagaran (2认同)