从多选中检索所有选定的选项

时间:2014-05-28 13:29:27

标签: javascript jquery select options

<select id="abc" multiple="multiple">
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
    <option value="E">C</option>
</select>

我希望检索所有选定的值。

无论我尝试什么,它似乎只给我列表中最低的所选项目的值。因此,如果我选择A,B和C,它将只返回C.

这些是我尝试过的事情:

$('#abc').val()
$('#abc').text()
$('#abc :selected').val()
$('#abc :selected').text()
$('#abc option:selected').val()
$('#abc option:selected').text()

我使用的jQuery版本是v1.9.1

4 个答案:

答案 0 :(得分:3)

您需要使用.each()遍历select中的所有选定元素,以便逐个访问它们:

$('#abc :selected').each(function(){ 
    console.log($(this).text()); 
});

或获取数组中的值

var selectedvals = $('#abc').val();

http://jsfiddle.net/spwSL/

答案 1 :(得分:1)

你可以这样做:

var values = $("#abc option:selected").map(function() {
    return this.value;
}).get();

答案 2 :(得分:1)

您可以使用.map()将值存储在数组中并使用它:

var vals = $('#abc :selected').map(function(){ 
    return this.value;
}).get();

console.log(vals);

或者这样:

var vals = [];
$('#abc :selected').each(function(){ 
    vals.push(this.value);
});
console.log(vals);

答案 3 :(得分:1)

对于this引用select元素时的多重选择,您不能使用this.value,因为它只返回一个值。正如@MilindAnantwar上面提到的那样$(this)将返回一个数组。如果您对以逗号分隔的字符串而不是数组感兴趣,可以使用join()数组方法将各种值连接到字符串中:

var selectedOpts = $( '#abc' ).val().join( ',' );

否则,您必须按数组表示法[0], [1], .... [n-1]访问元素。