2011-10-31 63 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,您可以用替換功能使用。