使用jquery .val()返回一个数组

时间:2015-05-13 19:46:58

标签: javascript jquery forms

我有一组复选框,并且只想将已检查的复选框连接到查询字符串中,但由于某种原因,val()只返回第一个复选框。 jQuery API文档提到选择可以从.val()函数返回一个数组,我可以使用原型或jquery插件获得相同的输入行为吗?

这是我的代码:

$('.boxes input:checked');
// [ <input type="checkbox" value="val1">, <input type="checkbox" value="val2">, <input type="checkbox" value="val3"> ]
$('.boxes input:checked').val();
// "val1"

理想情况下,第二个控制台输出将是:

$('.boxes input:checked').val();
// [ "val1", "val2", "val3" ]

1 个答案:

答案 0 :(得分:4)

val返回具有select属性的multiple元素的选定值数组,对于其他元素,它返回集合中第一个元素的值。您可以使用map方法:

var values = $('.boxes input:checked').map(function() {
   return this.value;
}).get();

您还可以定义方法:

$.fn.vals = function() {
    var first = this.get(0);
    if ( this.length === 0 ) return [];

    if ( first.tagName === 'SELECT' && first.multiple ) {
        return this.val();
    }

    return this.map(function() { return this.value; }).get();
}
// ...
var values = $('.boxes input:checked').vals();