有没有办法克隆jQuery或javascript中的表单字段值?

问题描述 投票:26回答:7

jQuery有一个clone()函数,克隆实际表单没有问题,但它不保留已输入表单的任何值。

有办法解决这个问题吗?

示例代码将非常感激。

jquery forms clone
7个回答
26
投票

碰到同样的问题,简单的解决方案:

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

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

诀窍是这将改变DOM树中的实际“值”属性,否则您“即时”输入的数据仅存在于DOM“状态”中


8
投票

根据笔记,这是一个解决方案。使用以下表格:

<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有效,包括textareas:

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

    }
)

但是:Kua zxsw指出


4
投票

另一个未被克隆的textarea值的简单修复是在HTML中包含以下JavaScript文件:http://jsfiddle.net/Jux3e/

它只是修补克隆方法,因此您可以包含该文件,然后忘记它。显然,克隆选择值也存在问题,同样的文件也修复了这个问题。

此文件链接到:https://github.com/spencertipping/jquery.fix.clone。这个小虫已经4岁了。


0
投票

你可以使用这个jQuery插件。

http://bugs.jquery.com/ticket/3016

0
投票

如果你需要复制字段本身,请检查这个小功能/** * 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
投票

发现这个问题并编写了这个包装器:

relCopy

0
投票

使用此代码复制textarea值

$.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 ); }; 
© www.soinside.com 2019 - 2024. All rights reserved.