通过复选框检查从全局数组中删除特定元素并使用JavaScript取消选中

时间:2010-11-22 15:31:10

标签: javascript jquery arrays push splice

当用户检查或取消选中表单中的复选框时,我正在尝试更新全局数组。然后,该数组将提交给服务器以更新数据库中的已检查选项。 我已经将已选中复选框的ID推送到数组中,但我不确定如何删除它们。

我已经创建了一个基本的jsFiddle来演示:

http://jsfiddle.net/ArFuz/

PS - 数组将在以后正确命名空间:)

3 个答案:

答案 0 :(得分:2)

由于您每次都循环遍历所有复选框,只需在开头清空数组并仅将已检查的项目放回:

ids = [];

if (this.checked) {    
    ids.push(this.id);
}

答案 1 :(得分:2)

为什么每次点击都能正常工作,只需在提交表单时执行此操作 - 您可以使用:checked选择器,而不是选择和迭代您不感兴趣的元素。

正如jyoseph建议的那样 - 你可以在这里使用serialize array来构建名称/值数组

e.g

$('#submitButton').click( function(ev){

   var ids = [];

    $(':checkbox:checked').each( function(){

         ids.push(this.id);

    });

   //do something with ids

});

答案 2 :(得分:1)

我认为你可能对jQuery serializeArray()(api link

有好处
$('#myForm input[type=checkbox]').change(function(){

    // get all checked checkboxes
    var ids = $('myForm input[type=checkbox]:checked').serializeArray();

});

编辑:JSBin example