Подтвердить что ты не робот

Есть ли способ клонировать значения полей формы в jQuery или javascript?

jQuery имеет функцию clone(), которая без каких-либо проблем клонирует фактическую форму, но не сохраняет значения, которые были введены в форму.

Есть ли способ обойти это?

Образец кода будет очень оценен.

4b9b3361

Ответ 1

столкнулась с одной и той же проблемой, простым решением:

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

var clones = $('input:text').clone();

трюк заключается в том, что это изменит фактический атрибут "значение" в дереве DOM, иначе данные, которые вы вводите "на лету", существуют только в состоянии DOM '

Ответ 2

Исходя из заметок, вот решение. В следующем виде:

<form id="old">
    <textarea>Some Value</textarea>
    <input type="text" value="Some Value" />
    <input type="checkbox" value="bob" checked />
    <br />
</form>

<input type="button" value="Clone" id="clone" />

Этот jQuery работает, включая текстовые области:

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

    }
)

Демо: http://jsfiddle.net/Jux3e/

Ответ 3

Другим простым решением для значений, не клонируемых в textarea, является включение в ваш HTML-код следующего файла JavaScript: https://github.com/spencertipping/jquery.fix.clone

Он просто исправляет метод клонирования, поэтому вы можете включить файл, а затем забудьте его там. По-видимому, есть проблема с значениями выбора клонирования, и этот же файл также исправляет эту проблему.

С этим файлом связался: http://bugs.jquery.com/ticket/3016. Ошибка 4 года.

Ответ 4

Вы можете использовать этот плагин 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;
}

Ответ 5

Нашел эту проблему и написал эту оболочку:

$.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 ); }; 

Ответ 6

если вам нужно дублировать само поле, проверьте эту оловянную функцию relCopy

Ответ 7

Используйте этот код для копирования значений textarea

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