2011-12-17 82 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