私のスクリプトでは、ユーザーが「追加」ボタンをクリックしたときにテーブル行を追加し、新しいテーブル行 (入力ボックスとドロップダウン選択がある人) の値を古い最後の行と同じに設定したいと考えています。このスクリプトを試してみますが、失敗します:
$('input[name=add]').live('click', function()
{
var y = $('table tbody tr').length;
var x = $('table tbody tr td').length;
var last = $('table tbody tr:last');
//alert(last.find('select:first').val());
var value;
last.clone(true).insertAfter(last);
//alert(y);
$('table tbody tr:last').find('td:last').html('<input type="button" class="btn" name="delete" value=" - " />');
var col =$('table tbody').find('tr').eq(y).find('td');
col.eq(x).each(function(index, element) {
if(col.eq(index).has('input'))
{
value=$(this).val();
$('table tbody tr:last').find('td').eq(index).find('input').val(value);
}elseif(col.eq(index).has('select'))
{
value = col.eq(index).find('select').val();
$('table tbody tr:last').find('td').eq(index).find('select').val(value);
}
});
最初の入力ボックスでのみ機能します。表の行は次のとおりです。
<tbody>
<tr><td><input type="text" class="input-small" name="article" /></td>
<td>
<select name="colore">
<option value="nabuk">Nabuk</option>
<option value="nero">Nero</option>
<option value="blu">Blu</option>
<option value="rosso">Rosso</option>
</select>
</td>
<td>
<select name="fondo">
<option value="gomma">Gomma</option>
<option value="cuoio">Cuoio</option>
<option value="legno">Legno</option>
</select>
</td>
<td>
<select name="numero">
<option value="36">36</option>
<option value="37">37</option>
<option value="38">38</option>
<option value="39">39</option>
</select></td>
<td><input type="number" class="input-mini" min="1" max="200" name="qnt" step="1" /></td>
<td></td>
</tr>
</tbody>