Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 Submit div内容包含表单控件状态_Javascript_Jquery_Forms_Serialization_Dynamic - Fatal编程技术网

Javascript Submit div内容包含表单控件状态

Javascript Submit div内容包含表单控件状态,javascript,jquery,forms,serialization,dynamic,Javascript,Jquery,Forms,Serialization,Dynamic,我有一个div,带有HTML标记和表单控件,如复选框、文本和下拉列表。我想发布整个内容以及表单控件的状态(即,捕获用户的选择)以将其保存到数据库中,然后重新呈现准确的HTML 我该怎么做?我曾经 $(“#div”).clone() 但似乎控制状态没有保存。 注意:我不想发布内部表单,然后重新呈现表单状态,因为HTML是动态的(它是一个HTML模板)如果我没有理解您的问题,您需要先将控件状态存储到HTML元素中(到标记中),然后提交div的innerHTML属性 看这把小提琴- 首先,您需要迭代指

我有一个
div
,带有HTML标记和表单控件,如
复选框、文本和下拉列表。我想发布整个内容以及表单控件的状态(即,捕获用户的选择)以将其保存到数据库中,然后重新呈现准确的HTML

我该怎么做?我曾经

$(“#div”).clone()

但似乎控制状态没有保存。
注意:我不想发布内部表单,然后重新呈现表单状态,因为HTML是动态的(它是一个HTML模板)

如果我没有理解您的问题,您需要先将控件状态存储到HTML元素中(到标记中),然后提交div的innerHTML属性

看这把小提琴-

首先,您需要迭代指定DIV中的所有表单控件:

var ctrls = parent.querySelectorAll("input, select, textarea");

for(var i = 0; i < ctrls.length; i++){
    var el = ctrls.item(i);
    //...
当然,如果您需要可用的算法,那么您需要为所有表单控件类型编写条件,这只是一个示例


注意:这是纯JS解决方案,使用jQuery可能代码更简单…

我已经更新了fiddle,使其更具示例性,并将整个div控件克隆到具有控件状态的新div中-您的解决方案对我有效,非常感谢,Jiri,您就是那个人。
var type = el.getAttribute("type");
//For checkbox

//Checkbox
if(type == "checkbox"){

    if(el.checked)
        el.setAttribute("checked", "checked");
    else
        el.removeAttribute("checked");

//Other textual / numeric input types
} else {

    el.setAttribute("value", el.value);                 

}