Duplicar/Excluir campos de formulários com jQuery
Uma forma bem simples de duplicar e excluir os campos.
Primeiro o HTML
<form action="pagina.php" method="post">
<table cellpadding="4" cellspacing="0" border="1">
<thead>
<tr>
<td>Dia</td>
<td>Hora</td>
<td>Resultado</td>
<td>Seleção</td>
<td> </td>
</tr>
</thead>
<tbody id="repetir">
<tr id="linha_1">
<td><input type="text" name="dia[]" value="" /></td>
<td><input type="text" name="hora[]" value="" /></td>
<td><input type="text" name="resultado[]" value="" /></td>
<td>
<select name="selecao[]">
<option></option>
<option value="1">Seleção 1</option>
<option value="2">Seleção 2</option>
<option value="3">Seleção 3</option>
</select>
</td>
<td><input type="button" value="Remover" id="remove" onclick="$.removeLinha(this);" /></td>
</tr>
</tbody>
<tfoot>
<tr>
<td align="right" colspan="5"><input type="button" value="Adicionar" id="add" /><input type="submit" value="Enviar" /></td>
</tr>
</tfoot>
</table>
</form>
Note que no código acima o NAME dos campos estão com “[]” isso por que vamos guardar as informações como array.
Agora o código em jQuery
<script>
/* Função jQuery para remover linha */ $.removeLinha = function (element){ /* Conta quantidade de linhas na tabela */ var linha_total = $('tbody#repetir tr').length; /* Condição que mantém pelo menos uma linha na tabela */ if (linha_total > 1){ /* Remove os elementos da linha onde está o botão clicado */ $(element).parent().parent().remove(); } /* Avisa usuário de que não pode remover a última linha */ else{ alert("Desculpe, mas você não pode remover esta última linha!"); } }; /* Quando o documento estiver carregado… */ $(document).ready(function(){ /* Variável que armazena limite de linhas (zero é ilimitada) */ var limite_linhas = 5; /* Quando o botão adicionar for clicado... */ $('#add').click(function(){ /* Conta quantidade de linhas na tabela */ var linha_total = $('tbody#repetir tr').length; /* Condição que verifica se existe limite de linhas e, se existir, testa se usuário atingiu limite */ if (limite_linhas && limite_linhas > linha_total){ /* Pega uma linha existente */ var linha = $('tbody#repetir tr').html(); /* Conta quantidade de linhas na tabela */ var linha_total = $('tbody#repetir tr').length; /* Pega a ID da linha atual */ var linha_id = $('tbody#repetir tr').attr('id'); /* Acrescenta uma nova linha, incluindo a nova ID da linha */ $('tbody#repetir').append('<tr id="linha_' + (linha_total + 1) + '">' + linha + '</tr>'); } /* Se usuário atingiu limite de linhas… */ else{ alert("Desculpe, mas você só pode adicionar até " + limite_linhas + " linhas!"); } }); });
</script>