添加动态名称以按顺序输入

时间:2009-06-11 20:26:43

标签: jquery forms

<tr>
<td><input name="of[1][dsn]" type="text" size="6" /></td>
<td><input name="of[1][gc]" type="text" size="6" /></td>
<td><input name="of[1][ys]" type="text" size="3" /></td>
<td><input name="of[1][ym]" type="text" size="3" /></td>
<td><input name="of[1][yl]" type="text" size="3" /></td>
<td><input name="of[1][s]" type="text" size="3" /></td>
<td><input name="of[1][m]" type="text" size="3" /></td>
<td><input name="of[1][l]" type="text" size="3" /></td>
<td><input name="of[1][xl]" type="text" size="3" /></td>
<td><input name="of[1][xxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxxl]" type="text" size="3" /></td>
<td><input name="of[1][xxxxxl]" type="text" size="3" /></td>
<td><input name="of[1][total]" type="text" size="4" /></td>
</tr>

我目前使用jQuery进行克隆,并希望每次重复时将“name”属性中的数字提高+1。 “[1] [dsn]”至[2] [dsn]“等。”我该怎么做?以下是我试图使用的内容,但这已经完全取代了已有的内容。

 ("input").each(function(index, element){$(element).attr("name", index);});

这就是我用来实际克隆表格行的内容:

var clonedRow = $("table tr:last").clone();     
$("table tr:last").clone(true).insertAfter("table tr:last").append(clonedrow);

2 个答案:

答案 0 :(得分:1)

好的,你需要这样的东西。首先我们克隆,然后我们将名称中的数字增加一个,然后我们将其应用于每个输入,然后我们将它们插入到DOM中。

var $cloned = $('#selector').clone();
var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
var newIndex = parseInt(oldIndex,10)+1;
$cloned.find('input').each(function(){
   var newName = $(this).attr('name').replace(oldIndex, newIndex);
   $(this).attr('name', newName);
});
$cloned.appendTo('#something');

这假设要增加的数字始终是名称字符串中的第一个数字(但它可以是多个数字)。

编辑响应您的评论:您需要在其余代码中克隆克隆对象。因此,总是克隆最新的克隆。您应该将代码重写为以下内容:

function clone(){
  var $cloned = $('table tr:last').clone();
  var oldIndex = $cloned.find('input').attr('name').match(/\d+/);
  var newIndex = parseInt(oldIndex,10)+1;
  $cloned.find('input').each(function(){
     var newName = $(this).attr('name').replace(oldIndex, newIndex);
     $(this).attr('name', newName);
  });
  $cloned.insertAfter('table tr:last');
}
$('p.add-btn').click(clone);

答案 1 :(得分:0)

查看jQuery clone功能,看看是否有帮助。我认为你还需要做一些解析来更新名称。