复制表行并增加所有名称属性

时间:2011-04-15 09:23:10

标签: javascript jquery

我们有一个这样的表:

<table>
 <tr>
  <td><input type="text" name="FirstName1" /></td>
  <td><input type="text" name="LastName1" /></td>
 </tr>
 <tr>
  <td><input type="text" name="FirstName2" /></td>
  <td><input type="text" name="LastName2" /></td>
 </tr>
</table>

我想要一个按钮,它会在表格末尾添加新行,并增加名称属性,所以它看起来像这样:

<table>
 <tr>
  <td><input type="text" name="FirstName1" /></td>
  <td><input type="text" name="LastName1" /></td>
 </tr>
 <tr>
  <td><input type="text" name="FirstName2" /></td>
  <td><input type="text" name="LastName2" /></td>
 </tr>
 <tr>
  <td><input type="text" name="FirstName3" /></td>
  <td><input type="text" name="LastName3" /></td>
 </tr>
</table>

等等。

到目前为止,我有这个,但它没有增加名称属性:

$("#newRowButton").click(function(){
  $("table tr:last").clone().appendTo("table");
});

3 个答案:

答案 0 :(得分:8)

$("#newRowButton").click(function() {
  $("table tr:last")
      .clone()
      .appendTo("table")
      .find(':input')
      .attr('name', function(index, name) {
          return name.replace(/(\d+)$/, function(fullMatch, n) {
              return Number(n) + 1;
          });
      })
});

Live demo

答案 1 :(得分:2)

$("#newRowButton").click(function(){
   var trows = $("table tr:last").clone();
   trows.find('td input').attr("name",function(i,a){
   var p = new RegExp("((?:[a-z][a-z]+))(\\d+)",["i"]);
   var m = p.exec(a);
   var index = parseInt(m[1]);
   index++;
   return m[0]+index;
   });
   trows.appendTo("table");
});

答案 2 :(得分:1)

var clonedRow = $("#EventType tr:last").clone();
$("input", clonedRow).attr('name', 'FirstName3'); // reset the name

你可以获得name属性并增加1

Reference