我的HTML结构是这样的:
<div>
<input type="text" name="array[a][b][0][foo]" />
<input type="text" name="array[a][b][0][bar]" />
<select name="array[0][a][b][baz]>...</select>
</div>
其中元素值通过POST提交并由PHP处理。select
元素附加了一个change
事件,该事件克隆父div
并将其附加在下面。
当div
被克隆时,元素的名称仍然相同,值会相互覆盖,我不希望发生这种情况。所有array[a][b]
元素都是数组类型,因此我不能简单地使用array[a][b][]
(foo/bar/baz值将不再分组)。
最好的方法是在克隆时更改名称?这意味着索引需要递增。这里我不能使用简单的el.name.replace(N, N + 1)
,因为名称中有可能多次出现n
您可以将一个类命名为父类<div>
,并且在克隆时使用该类名。
<div class="a">
<input type="text" name="array[a][b][0][foo]" />
<input type="text" name="array[a][b][0][bar]" />
<select name="array[0][a][b][baz]>...</select>
</div>
<div class="a">
<input type="text" name="array[a][b][1][foo]" />
<input type="text" name="array[a][b][1][bar]" />
<select name="array[1][a][b][baz]>...</select>
</div>
然后,在你的javascript中你可以这样做:
var n = $('.a').length;
使用jquery返回2
,您可以将其与replace函数一起使用。