jQuery - 使用表单元素克隆<div>,包括它们的值</div>

时间:2013-07-29 08:44:20

标签: javascript jquery html forms formset

我有一个Django formset,它有很多表单元素。我有一个工作方法来创建一个新的空表单,但我还需要一个复制表单的解决方案。从技术上讲,所有形式都在div中,如下所示:

<form>
...
    <div class="subform">
         ...
    </div>
...
</form>

问题是,在最新的jQuery版本中,html和replaceWith方法不处理输入值,因此它们创建空表单元素 - 这不是我需要的行为。当然,我可以实现一个迭代所有元素的算法,复制它们并设置它们的值,但是如果可能的话我想避免它。

我想用复制的值替换现有表单。

2 个答案:

答案 0 :(得分:3)

是的,可以使用clone()replaceAll()代替html() / replaceWith()clone()将保留value元素的<input>属性,甚至可以保留事件处理程序和自定义数据。

你可以这样写:

var theForm = $("selector-matching-your-form");
theForm.clone(true).replaceAll(theForm);

答案 1 :(得分:0)

Frédéric有一个很好的答案,我花了一段时间来理解它。这是一个不同的版本:

创建一个引用元素的变量。

var someElement = $("input#some-element");

克隆元素

var cloneOfElement = $someElement.clone(true);

使用克隆替换原始元素,方法是使用引用原始元素的变量。

cloneOfElement.replaceAll( $someElement );

-

来自replaceAll()文档: “.replaceAll()方法类似于.replaceWith(),但源和目标相反。”