在jQuery中获取数组中已检查复选框列表的值

时间:2012-03-02 12:13:13

标签: javascript jquery checkbox

我有一个复选框列表,在页面加载时预先选中了所有复选框。

首先,我想读取所有复选框(已选中)值并存储在全局数组中。

稍后,每当用户点击任何复选框(未选中/选中)时,我都希望使用仅选中复选框的值更新数组。

我想在jQuery中做这一切。

感谢

3 个答案:

答案 0 :(得分:4)

<input type="checkbox" value="somevalue1" class="chk">
<input type="checkbox" value="somevalue2" class="chk">
<input type="checkbox" value="somevalue3" class="chk">
<input type="checkbox" value="somevalue4" class="chk">
<input type="checkbox" value="somevalue5" class="chk">
<script>
var someGlobalArray = new Array;

$(".chk").click(function() {
    someGlobalArray=[];
    $('.chk:checked').each(function() {
        someGlobalArray.push($(this).val());
    });
    console.log(someGlobalArray);
});
</script>

答案 1 :(得分:2)

你的意思是这样吗?

var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "click", function(){
    arrCheckboxes = $(checkboxSelector).map(function() {
        return this.checked;
    }).get();
});

(也许您应该将$(“body”)更改为更精确的容器)

如果你想要一个包含名称(...或id或者元素)的对象的数组......你可以这样做:

var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "change", function(){
    arrCheckboxes = $(checkboxSelector).map(function() {
        return { name: this.name, val: this.checked };
    }).get();
});

答案 2 :(得分:0)

我认为您需要的是已检查项目的名称 id ,因为复选框是布尔值?

var checked = {};
$(':input[type="checkbox"]').each(function() {
    var name= this.name;
    var val = this.checked;
    if (val) {
        checked[name] = val;
    }
}).on('change', function() {
    var name = this.name;
    var val = this.checked;
    if (val) {
        checked[name] = val;
    } else {
        delete checked[name];
    }
});

对象checked将包含,只有与已检查项对应的对象才会出现在该对象中。

http://jsfiddle.net/tFYPF/

的工作演示