我必须在表单中实现“添加新行”功能。表单的结构类似于:
<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..等等
我在寻找什么
单击“再添加一行”按钮时,应发生以下情况
- 在最后一行(带有按钮的行)上方插入一个新行
- name 属性值在该行中增加 1(即 v2[label] 变为 v3[label],v2[observation] 变为 v3[observation] 等等)
我尝试了什么
我最接近的是使用jQuery's
clone()
. 这确实完美地添加了行。但是我发现每次单击按钮时很难找到一种方法将 name 属性的值增加 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 属性仍为 v2,而第三行和第四行应为 v3 和 v4。我知道clone()
不能这样做,这就是为什么我正在寻找替代方案。