2013-10-22 14 views
0

我正在尝试动态追加复选框内的div。得到所有选中的复选框在一个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; 
} 
+0

请张贴您的HTML – Satpal

+0

您在div或复选框上选择了“Checked”类吗?在你的代码中,你正在从数组中创建一个字符串来检查数组中是否有任何东西。为什么不检查数组的长度? – Guffa

+0

这是常见的堆栈溢出礼貌,至少回复试图帮助你的人。我还注意到,您已经提出了几个问题,但即使它们看起来有效,也没有接受任何答案。请记住接受帮助你的答案。 – George

回答

5

我不知道你为什么在最后加入阵列 - 所以我没有将它。但这是一个基本的方法。 $.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

+0

我喜欢这个优雅的解决方案。顺便说一下,OP的说明 - 检查/取消选中的东西已经由默认处理,所以您只需要点击(或更改)复选框时,通过复选框的数组并返回那些被检查的ID就像那样简单。 – Terry

0

而是把你的表格ID和同时提交检查什么都复选框选中这样

$("#formid input:checkbox:checked").each(function() { 
    var chkArray = []; 
    chkArray.push($(this).id()); 
}); 
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); 
}); 
0

这是我会怎么做:

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. 

}); 

Codepen

1

我测试了乔治的jsfiddle并不能得到它的工作,但他编辑的代码,并使它工作,你可以试试这个作品

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

      $checkbox = $('.CheckBxMSG'); 
      var chkArray = []; 
      chkArray = $.map($checkbox, function (el) { 
       if (el.checked) { return el.id }; 
      }); 
      alert(chkArray); 
     }) 
相关问题