Is there a way to clone form field values in jQuery or javascript?

后端 未结 7 594
礼貌的吻别
礼貌的吻别 2020-11-28 14:01

jQuery has a clone() function that clones the actual form with no problem, but it doesn\'t preserve any values that have been entered into the form.

Is

相关标签:
7条回答
  • 2020-11-28 14:41

    Another easy fix for the textarea values not being cloned is to include the following JavaScript file in your HTML: https://github.com/spencertipping/jquery.fix.clone

    It just patches the clone method so you can include the file and then forget it's there. Apparently there is a problem with cloneing select values too and this same file fixes that problem as well.

    This file was linked to from: http://bugs.jquery.com/ticket/3016. The bug is 4 years old.

    0 讨论(0)
  • 2020-11-28 14:44

    Use this code to copy textarea values

    clonedObject.find(textareaObject).val(originalObject.find(textareaObject).val());
    
    0 讨论(0)
  • 2020-11-28 14:45

    You may use this jQuery Plugin.

    /**
     * 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;
    }
    
    0 讨论(0)
  • 2020-11-28 14:54

    Stemming from the notes, here's a solution. With the following form:

    <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" />
    

    This jQuery works, including the textareas:

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

    ​Demo: http://jsfiddle.net/Jux3e/

    0 讨论(0)
  • 2020-11-28 14:56

    ran into the same problem, simple solution:

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

    the trick is that this will change the actual 'value' attribute in the DOM tree, otherwise the data you enter 'on-the-fly' only exists in the DOM 'state'

    0 讨论(0)
  • 2020-11-28 14:58

    if you need to duplicate the field itself, check this tinny function relCopy

    0 讨论(0)
提交回复
热议问题