如何选择具有相同名称的所有输入并按名称对其进行索引 [英] How to select all inputs having same name and index them by their name

查看:51
本文介绍了如何选择具有相同名称的所有输入并按名称对其进行索引的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have to handle a form generated by a third part. This form provides some checkbox "multi-select" attributes. But input name's are identical, and PHP $_POST can't handle identical keys (only the last data is handled).

以下是表单的示例:

<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>

我想解析所有复选框输入,只获取同名输入组,并追加 []以他们的名字......

I'd like to parse all checkbox inputs, get only group of same name inputs, and append "[]" to their name...

我想在jQuery处理后获得:

What I want to get after jQuery processing :

<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>

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

Is there a way to identify group of inputs with same name ?

推荐答案

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

This will append [] to the name of each checkbox item if there exists another item with the same name.

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];
    });

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

这篇关于如何选择具有相同名称的所有输入并按名称对其进行索引的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆