如何选择具有相同名称的所有输入并按名称对其进行索引

Alt*_*PHP 13 jquery jquery-selectors

我必须处理由第三部分生成的表单.此表单提供了一些复选框"多选"属性.但是输入名称是相同的,并且PHP $ _POST无法处理相同的键(仅处理最后的数据).

以下是表单的示例:

<form>
    <input type="checkbox" name="attr1" value="1" />
    <input type="checkbox" name="attr1" value="2" />
    <input type="checkbox" name="attr1" value="3" />
    <input type="checkbox" name="attr1" value="4" />
    <input type="checkbox" name="attr2" value="xx" />
    <input type="checkbox" name="attr3" value="a" />
    <input type="checkbox" name="attr3" value="b" />
    <input type="checkbox" name="attr3" value="c" />
    <input type="checkbox" name="attr3" value="d" />
    <input type="text" name="attr4" value="" />
</form>
Run Code Online (Sandbox Code Playgroud)

我想解析所有复选框输入,只获取相同名称输入的组,并在其名称后附加"[]"...

我想在jQuery处理后得到什么:

<form>
    <input type="checkbox" name="attr1[]" value="1" />
    <input type="checkbox" name="attr1[]" value="2" />
    <input type="checkbox" name="attr1[]" value="3" />
    <input type="checkbox" name="attr1[]" value="4" />
    <input type="checkbox" name="attr2" value="xx" />
    <input type="checkbox" name="attr3[]" value="a" />
    <input type="checkbox" name="attr3[]" value="b" />
    <input type="checkbox" name="attr3[]" value="c" />
    <input type="checkbox" name="attr3[]" value="d" />
    <input type="text" name="attr4" value="" />
</form>
Run Code Online (Sandbox Code Playgroud)

有没有办法识别具有相同名称的输入组?

Sha*_*hin 21

[]如果存在具有相同名称的另一个项目,则将附加到每个复选框项目的名称.

var name_map = {};
$("input[type=checkbox]")  // for all checkboxes
    .each(function() {  // first pass, create name mapping
        var name = this.name;
        name_map[name] = (name_map[name]) ? name + "[]" : name;
    })
    .each(function() {  // replace name based on mapping
        this.name = name_map[this.name];
    });
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/gnfsG/