2011-12-17 75 views
0

在需要不同數量的樂隊成員的表單中,我在按鈕上使用以下代碼來複制輸入。在jQuery中克隆麻煩

的HTML片段是這樣的:

<div id="input1" style="margin-bottom:4px;" class="clonedInput"> 
    <label for="band_member">Band Member: </label> 
    <input type="text" name="name1" id="name1" /> 
</div> 
<div> 
    <input type="button" id="btnAdd" value=" add another member " /> 
</div> 

這jQuery是在文件準備好功能:

$('#btnAdd').click(function() { 
var num = $('.clonedInput').length; 
var newNum = new Number(num + 1); 
var newElem = $('#input' + num).clone().attr('id', 'input' + newNum); 
newElem.children(':first').attr('val', '').attr('id', 'name' + newNum).attr('name', 'name' + newNum); 
$('#input' + num).after(newElem); 
$("#band_member_count").val(newNum);    
}); // end btnAdd click 

當提交表單時,添加的輸入沒有被提交最後一個條目變成第一個輸入的值,並且每個新添加的輸入的值不會像代碼所示那樣被清除。

我非常感謝任何幫助。

在此先感謝,喬恩

回答

3

,我認爲它是不工作的原因是因爲你要添加的ID =「名稱」 + NUM的標籤,而不是輸入,因此每個輸入具有相同的確切ID。

第一選擇更改爲輸入選擇:

newElem.children(':first').attr('val', '').attr('id', 'name' + newNum).attr('name', 'name' + newNum); 

應該是:

newElem.find('input').attr('id', 'name' + newNum).attr('name', 'name' + newNum).val(""); 
+0

我改變了它如你所說,但沒有奏效。然而,按照你的邏輯,我將它改爲:newElem.find('input')。attr('val','').attr('id','name'+ newNum).attr('name','名稱'+ newNum);並且它現在提交所有值(感謝!!!)但是克隆上的值仍然沒有被清除。思考? – jgravois 2011-12-17 05:57:43