Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-Clone<;部门>;使用表单元素,包括其值_Javascript_Jquery_Html_Forms_Formset - Fatal编程技术网

Javascript jQuery-Clone<;部门>;使用表单元素,包括其值

Javascript jQuery-Clone<;部门>;使用表单元素,包括其值,javascript,jquery,html,forms,formset,Javascript,Jquery,Html,Forms,Formset,我有一个Django表单集,它有很多表单元素。我有一个创建新空表单的工作方法,但我还需要一个复制表单的解决方案。从技术上讲,所有表格都在一个div中,如下所示: <form> ... <div class="subform"> ... </div> ... </form> ... ... ... 问题是,在最新的jQuery版本中,html和replaceWith方法不处理输入值,因此它们会创建空表单元素——

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

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

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

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

可以使用和而不是
html()
/
replaceway()
clone()
将保留
元素的
属性,甚至可以保留事件处理程序和自定义数据

你可以这样写:

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

弗里德里克有一个绝妙的答案,我花了一段时间才明白。以下是另一个版本:

创建一个引用元素的变量

var someElement=$(“输入#某些元素”)

克隆元素

var cloneOfElement=$someElement.clone(true)

通过使用引用原始元素的变量,使用克隆替换原始元素

cloneOfElement.replaceAll($someElement)

--

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

是否尝试了
clone()
而不是
html()
/
replaceWith()
?它将保留
元素的
属性,甚至可以保留事件处理程序和自定义数据。@FrédéricHamidi我有,这非常有效。这就是我创建新表单的方式。(当然,它也有很多django特有的东西)。但在这种情况下,我必须用新表单替换现有表单。您也可以使用它来复制现有表单
yourForm.clone(true).replaceAll(yourForm)
应该可以工作。乍一看,它似乎工作得很好!谢谢你愿意接受赏金吗?