jquery多个复选框数组

时间:2011-05-29 08:42:31

标签: jquery arrays checkbox

<input type="checkbox" name="options[]" value="1" />
<input type="checkbox" name="options[]" value="2" />
<input type="checkbox" name="options[]" value="3" />
<input type="checkbox" name="options[]" value="4" />
<input type="checkbox" name="options[]" value="5" />

如何创建一个包含已选中复选框值的数组?

注意:(重要)我需要像[1,2,3,4,5]这样的数组,而不是像[“1”,“2”,“3”,“4”,“5”]那样的数组。
注意:大约有50个复选框。

有人能帮助我吗?请!

谢谢!

7 个答案:

答案 0 :(得分:69)

var checked = []
$("input[name='options[]']:checked").each(function ()
{
    checked.push(parseInt($(this).val()));
});

答案 1 :(得分:58)

您可以使用$.map()(甚至是对jQuery对象运行的.map()函数)来获取已检查值的数组。一元(+)运算符将字符串转换为数字

var arr = $.map($('input:checkbox:checked'), function(e,i) {
    return +e.value;
});

console.log(arr);

这是an example

答案 2 :(得分:2)

var checkedString = $('input:checkbox:checked.name').map(function() { return this.value; }).get().join();

答案 3 :(得分:2)

如果您的每个输入框都有一个类,那么您可以将其作为

        var checked = []
        $('input.Booking').each(function ()
        {
            checked.push($(this).val());
        });

答案 4 :(得分:0)

可以重用的全局函数:

function getCheckedGroupBoxes(groupName) {

    var checkedAry= [];
    $.each($("input[name='" + groupName + "']:checked"), function () {
        checkedAry.push($(this).attr("id"));
    });

     return checkedAry;

}

其中groupName是复选框组的名称,在您的示例中为:'options []'

答案 5 :(得分:0)

通过这种方式,您可以在选中或取消选中名为options[]的任何复选框时添加或删除值:

var checkedValues = [];
$("input[name='options[]']").change(function() {
    const intValue = parseInt($(this).val());
    if ($(this).is(':checked')) {
        checkedValues.push(value);
    } else {
        const index = checkedValues.indexOf(value);
        if (index > -1) {
           checkedValues.splice(index, 1);
        }
    }
 });

答案 6 :(得分:0)

纯 javascript 答案

const checked = Array.from(
    document.querySelectorAll(`input[name=myCheckboxGroup]:checked`)).map(node=>node.value);