フォームに「新しい行の追加」機能を実装する必要があります。フォームの構造は次のようなものです。
<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つ追加]ボタンをクリックすると、次のことが発生します。
- 最後の行(ボタンのある行)のすぐ上に新しい行が挿入されます
- その行で名前属性値が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);
});
ボタンを2回クリックすると、次の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のままですが、3行目と4行目はv3とv4である必要があります。clone()
私はそれができないことを理解しており、それが私が代替案を探している理由です。