¿Hay alguna manera de clonar valores de campo de formulario en jQuery o javascript?

jQuery tiene una función clone() que clona el formulario real sin problemas, pero no conserva ningún valor que se haya ingresado en el formulario.

¿Hay alguna forma de evitar esto?

El código de muestra sería muy apreciado.

se encontró con el mismo problema, solución simple:

 // touch all input values $('input:text').each(function() { $(this).attr('value', $(this).val()); }); var clones = $('input:text').clone(); 

el truco es que esto cambiará el atributo de ‘valor’ real en el árbol DOM, de lo contrario, los datos que ingrese ‘sobre la marcha’ solo existen en el ‘estado’ DOM

A partir de las notas, aquí hay una solución. Con la siguiente forma:

 

Este jQuery funciona, incluidas las áreas de texto:

 $( 'input#clone' ).click( function() { $( 'form#old textarea' ).text( $( 'form#old textarea' ).val() ) $("form#old").clone().attr( 'id', 'new_form' ).appendTo("body") } ) 

Demostración: http://jsfiddle.net/Jux3e/

Otra solución fácil para los valores de área de texto que no se clonan es incluir el siguiente archivo JavaScript en su HTML: https://github.com/spencertipping/jquery.fix.clone

Simplemente parchea el método de clonación para que pueda incluir el archivo y luego olvide que está allí. Aparentemente hay un problema con la clonación de valores seleccionados también y este mismo archivo corrige ese problema también.

Este archivo estaba enlazado desde: http://bugs.jquery.com/ticket/3016 . El error tiene 4 años.

Puedes usar este plugin jQuery.

 /** * clone element, including the textarea part */ $.fn.clone2 = function(val1, val2) { // ret for return value, cur for current jquery object var ret, cur; ret = $(this).clone(val1, val2); cur = $(this); // copy all value of textarea ret.find('textarea').each(function() { var value_baru; // use name attribute as unique id value_baru = sek.find('[name="$name"]'.replace('$name', $(this).attr('name'))) .val(); // set the new value to the textarea $(this).val(value_baru); }); // return val return ret; } 

si necesita duplicar el campo en sí, verifique esta pequeña función relCopy

Encontró este problema y escribió este contenedor:

 $.fn.cloneField = function(withDataAndEvents) { var clones = []; this.each(function(){ var cln = $(this).clone(withDataAndEvents); cln.val($(this).val()); clones.push(cln.get(0)); }); return jQuery( clones ); }; 

Use este código para copiar los valores de textarea

 clonedObject.find(textareaObject).val(originalObject.find(textareaObject).val());