2011-10-31 69 views
0

我的HTML结构是这样的:动态元素的名称使用Javascript/jQuery的属性

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

凡元素值由PHP通过POST提交和处理。 select元素附加了change事件,即clones父母div并在下面追加它。

div被克隆时,元素的名称仍然是相同的,并且值会覆盖对方,我不希望发生这种情况。 所有array[a][b]元素都是数组类型,因此我不能简单地使用array[a][b][](foo/bar/baz值将不再被分组)。

解决此问题的最佳方法是在克隆名称时更改名称?这意味着索引需要增加。我不能用一个简单的el.name.replace(N, N + 1)这里,因为它是可能的名字有N.

+0

你究竟在做什么?我几次阅读您的描述,但仍然处于亏损状态。 –

回答

0

的多个实例可以命名一个类父<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,您可以用替换功能使用。