jquery:以数组格式检索名称的提交值

jquery:以数组格式检索名称的提交值,jquery,Jquery,在提交时,我需要收集一系列复选框字段的值,这些字段具有数组格式的通用名称。我试过这样做: $('form').submit(function(e){ $(':input:checkbox[name=fields[]]', this).each(function(){ console.log($(this).attr('name')); console.log($(this).val); }); }); 但是“[name=fields[]”并没有限制我认为应该采用的

在提交时,我需要收集一系列复选框字段的值,这些字段具有数组格式的通用名称。我试过这样做:

$('form').submit(function(e){   
  $(':input:checkbox[name=fields[]]', this).each(function(){
    console.log($(this).attr('name'));
    console.log($(this).val);
  });
});
但是“[name=fields[]”并没有限制我认为应该采用的方式。 我最终需要做的是确定从该字段数组中选中了多少复选框。我只是在计算条件时发送到控制台日志。

编辑:

$('form').submit(function(e){   
    var fields = new Array();
    $(':input:checkbox[name*=fields]', this).each(function() {
        index_a = $(this).attr('name');
        if (fields[index_a] == undefined) fields[index_a] = 0;
        if ($(this).is(':checked')) fields[index_a] += 1;
    });
    return false;
});

这将返回一个
字段
数组,其中每个
字段[任何内容]
都有键,值等于在每个
字段[任何内容]
中选中了多少复选框


在我的JSFIDLE示例中,我使用了
字段[opt1]
字段[opt2]
,虽然从技术上讲,在其中放一个带括号的键可能根本不是一个好主意,但它可以工作。如果您愿意,您可以使用一些正则表达式来拉出里面的
opt1
,并将其作为键。

您可以用html和js制作一个演示,让我们都能看到您看到的内容吗?您是否尝试过
$(':checkbox[name=“fields[]”,这个)
?字段名称是:因此,如果我删除名称过滤器,您的第二个建议会非常有效(除了它捕获我希望忽略的其他输入),但它不适用于它。您先前的建议非常简单和优雅。所以我尝试了一个早期版本的组合,修改后的:count=$(':input:checkbox:checked[name*=fields]',this);而且它似乎在起作用。你能看到什么陷阱吗?看起来应该有用。然后,结果数组将只有至少选中一个复选框的复选框组的键。正如我之前所说,一个gotcha可能有一个数组键,如
count[fields[opt1]]]
,但它至少在Chrome中工作。找到了gotcha。在chrome和FF中工作良好,但在IE中不起作用(惊喜,惊喜)。我试试你的第二个建议。我想我需要再多用一点以前的型号。你修改过的代码做得太多了。fields数组没有重复的键——我只是计算单个数组中的选中元素。例如,表单字段的名称为:字段[opt1]、字段[opt2]、字段[opt3]、字段[opt4]——可以检查其中的两个字段,这将产生2的计数。