我将要在表单中实现“新增行”功能。该表单的结构类似于:
<table>
<tr>
<td><input type="text" name="v1[label]" /></td>
<td><input type="text" name="v1[observation]" /></td>
<td><input type="text" name="v1[remarks]" /></td>
</tr>
<tr>
<td><input type="text" name="v2[label]" /></td>
<td><input type="text" name="v2[observation]" /></td>
<td><input type="text" name="v2[remarks]" /></td>
</tr>
<tr>
<td colspan="3">
<input type="button" id="addrow" value="Add One More Row">
<input type="submit" name="proceed" value="Submit" />
</td>
</tr>
</table>
如图所示,随着每一行的增加,v []
数字也会增加。v1、v2等等。
我想要的是什么
当单击“添加一行”按钮时,应发生以下事情:
- 在最后一行(带有按钮的行)上方插入新行
- 该行中的名称属性值增加1(即v2 [label]变为v3 [label],v2 [observation]变为v3 [observation]等)
我尝试过的方法
我最接近的方法是使用jQuery的clone()
。这确实完美地添加了该行。但我很难找到一种方法,以便每次单击按钮时都可以将名称属性的值增加1。
目前正在使用的jQUERY
$('input:button[id="addrow"]').click(function(){
var secondlast = $('table tr:last').prev('tr');
secondlast.clone().insertBefore(secondlast);
});
如果我点击按钮两次,将添加以下HTML内容。
<tr>
<td><input type="text" name="v2[label]" /></td>
<td><input type="text" name="v2[observation]" /></td>
<td><input type="text" name="v2[remarks]" /></td>
</tr>
<tr>
<td><input type="text" name="v2[label]" /></td>
<td><input type="text" name="v2[observation]" /></td>
<td><input type="text" name="v2[remarks]" /></td>
</tr>
现在正在添加一行,但是第三行和第四行的name属性应该分别为v3和v4,而仍然保留为v2。我知道clone()
无法做到这一点,因此我正在寻找替代方法。
secondlast.clone().each('input')
,解析名称并替换数字。 - Eregrith