Estoy buscando una manera efectiva de clonar/cambiar el nombre o volver a crear campos de dirección para ofrecer la capacidad de enviar varias direcciones en la misma página. Así, con forma de ejemplo como este:Clonación y cambio de nombre de elementos de formulario con jQuery
<div id="addresses">
<div class="address">
<input type="text" name="address[0].street">
<input type="text" name="address[0].city">
<input type="text" name="address[0].zip">
<input type="text" name="address[0].state">
</div>
</div>
<a href="" id="add_address">Add address form</a>
De lo que puedo entender que hay dos opciones para hacerlo:
recrear el campo de formulario por el campo y el incremento del índice que es un poco prolijo:
var index = $(".address").length; $('<`input`>').attr({ name: 'address[' + index + '].street', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].city', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].zip', type: 'text' }).appendTo(...); $('<`input`>').attr({ name: 'address[' + index + '].state', type: 'text' }).appendTo(...);
capa existente de clonar y reemplazar el nombre en el clon:
$("div.address").clone().appendTo($("#addresses"));
¿Cuál te recomienda usar en términos de ser más eficiente y si su # 2 ¿podría sugerir cómo iba a ir sobre la búsqueda y la sustitución de todas las apariciones de [0] por [1] ([n]) Gracias.
¡Eso es perfecto! gracias por la explicación del funcionamiento interno del clon así como un recordatorio sobre problemas con el cambio de nombre de la entrada en IE. – Micor