在jQuery中克隆的麻烦

时间:2011-12-17 05:12:18

标签: php 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

提交表单时,未提交添加的输入,最后一个条目成为第一个输入的值,并且不会像代码所示那样清除每个新添加的输入的值。

我非常感谢对此有任何帮助。

提前致谢, 乔恩

1 个答案:

答案 0 :(得分:3)

我认为它不起作用的原因是因为你在标签中添加了id =“name”+ 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("");