我必须处理由第三部分生成的表单.此表单提供了一些复选框“多选”属性.但输入名称是相同的,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>
我想解析所有复选框输入,只得到一组相同的名称输入,并将“[]”附加到他们的名字…
在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>
有没有办法识别具有相同名称的输入组?
解决方法
如果存在具有相同名称的另一个项目,则将附加[]到每个复选框项目的名称.
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]; });