0

我正在尝试在 div 中动态附加复选框。

我想要一个 javascript 函数来执行以下操作:

  • 当我选中一个复选框时:将其 id 添加到数组中。
  • 当我取消选中一个复选框时:从该数组中删除 id。

这是我到目前为止所做的:

var chkArray = [];
$(".Checked:checked").each(function () {
    chkArray.push($(this).attr("id"));
});
var selected;
selected = chkArray.join(',') + ",";
if (selected.length > 1) {
    return chkArray;
}
4

6 回答 6

7

我不确定你为什么要在最后加入阵列 - 所以我没有包括它。但这里有一个基本的方法。$.map()将遍历复选框数组并返回当前元素的 id,仅当它被选中时。$.map()然后将返回的值存储在一个新数组 ( chkArray) 中:

$checkbox = $('.Checked');
function checkArray(){
    var chkArray = [];
    chkArray = $.map($checkbox, function(el){
        if(el.checked) { return el.id };
    });
    console.log(chkArray);
}

JSFiddle

于 2013-10-22T14:47:06.230 回答
2

这就是我要做的:

var checkedArray = [];

$(":checkbox").change(function(){
  if((this).checked){
    checkedArray.push(this.id);
  }
  else{
    checkedArray.splice(checkedArray.indexOf(this.id), 1);
  }

  //you can call your function here if you need to act on this.

});

密码笔

于 2013-10-22T14:53:26.877 回答
1

我测试了 George 的 jsfiddle,但无法使其正常工作,但编辑了他的代码并使其正常工作,您可以试试这是可行的

 $('#PostAlert').click(function GetID() {

            $checkbox = $('.CheckBxMSG');
            var chkArray = [];
            chkArray = $.map($checkbox, function (el) {
                if (el.checked) { return el.id };
            });
            alert(chkArray);
        })
于 2016-07-06T09:50:37.150 回答
0

取而代之的是您的表单ID,并在提交时检查所有复选框都是这样选中的

$("#formid input:checkbox:checked").each(function() {
  var chkArray = [];
  chkArray.push($(this).id());
});
于 2013-10-22T14:48:54.863 回答
0

这应该做你所描述的

var checkboxes = $("input[type=checkbox]");
var r = [];

checkboxes.on("change",function(e){ 
    if(!e.target.id){
        return;  
    } 
    if(e.target.checked){
        r.push(e.target.id);
    }
    else{
        var index = r.indexOf(e.target.id)
        if(~index){
            r.splice(index, 1);
        }               
    }
    console.log(r);
});
于 2013-10-22T14:52:58.667 回答
0

如果您希望扫描页面上的所有复选框,请querySelectorAll与 css 选择器一起使用,该选择器告诉命令查找所有复选框并仅选择已选中的复选框:

var checked_boxes = document.querySelectorAll('[type^="checkbox"]:checked');

如果您只想扫描复选框的子集,请首先为所有复选框赋予相同的名称属性(例如,name="group-1")并改用:

var checked_boxes = document.querySelectorAll('[name^="group-1"]:checked');

该变量checked_boxes现在是一个节点列表。您现在可以从每个节点获取属性,例如 id,以根据需要构建列表。

于 2022-03-01T15:42:45.657 回答