当用户检查或取消选中表单中的复选框时,我正在尝试更新全局数组。然后,该数组将提交给服务器以更新数据库中的已检查选项。 我已经将已选中复选框的ID推送到数组中,但我不确定如何删除它们。
我已经创建了一个基本的jsFiddle来演示:
PS - 数组将在以后正确命名空间:)
答案 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();
});