如何创建动态 html 表单的 JSON 对象(表单元素)?

Posted

技术标签:

【中文标题】如何创建动态 html 表单的 JSON 对象(表单元素)?【英文标题】:How to create create JSON object ( of form elements) of dynamic html form? 【发布时间】:2015-02-18 06:14:33 【问题描述】:

尝试创建动态 html 表单并保存它们,我可以使用引导程序创建动态表单,但在提交时我正在努力创建此动态表单的 JSON。 我正在寻找保存这样的东西


 "form" :
    [

        
            "name" : "username",
            "id" : "txt-username",
            "caption" : "Username",
            "type" : "text",
            "placeholder" : "E.g. user@example.com"
        ,
        
            "name" : "password",
            "caption" : "Password",
            "type" : "password"
        ,
        
            "type" : "submit",
            "value" : "Login"
        
    ]

我不知道如何才能做到这一点。

【问题讨论】:

您到底想达到什么目标?您想发送所有表单属性吗?还是只输入? 我动态创建的所有表单属性(html 表单)。我想保存该表单属性的 JSON 对象(类型、值(如果有)、名称、id ..)。 对于仅发送值,您可以使用 $("form").serializeArray();...但是对于我不知道的属性...我认为 attr() 函数可能会对您有所帮助。跨度> 我在尝试使用 DOM,但应该有一些标准的方式.. 啊 【参考方案1】:

应该这样做:

function getAttrs(DOMelement) 
    var obj = ;
    $.each(DOMelement.attributes, function () 
        if (this.specified) 
            obj[this.name] = this.value;
        
    );
    return obj;


$("form").each(function () 
    var json = 
        "form": []
    ;
    $(this).find("input").each(function () 
        json.form.push(getAttrs(this));
    );

    $(this).find("select").each(function () 
        var select = getAttrs(this);
        select["type"] = "select";
        var options = [];
        $(this).children().each(function () 
            options.push(getAttrs(this));
        );
        select["options"] = options;
        json.form.push(select);
    );

    console.log(json);
);

演示:http://jsfiddle.net/j1g5jog0/

更新:http://jsfiddle.net/j1g5jog0/5/

【讨论】:

有一个问题, @user986508 好的,那么您希望如何存储选择,像这样? "type": select, "options": [..., ..., ...] 是这样的, "form": [ "name": "username", "id": "txt-username", "caption": "Username", "type": “文本”,“占位符”:“例如 user@example.com”,“名称”:“密码”,“标题”:“密码”,“类型”:“密码”,“名称”:“国家”,“类型”:“选择”,“选项”:[ “名称”:“日本”,“名称”:“泰国”,“名称”:“西班牙”]] @caeth 感谢您提供的示例。您能帮我看看如何在 json 对象中成功创建数据吗?

以上是关于如何创建动态 html 表单的 JSON 对象(表单元素)?的主要内容,如果未能解决你的问题,请参考以下文章

如何把json数据动态输出到table表单或div中

从 json 动态创建的 Javascript 表单输入,需要将对象映射到另一个对象的正确字段并保存

显示动态 HTML 表单元素,其中包含具有订单配置的数组对象

如何将由代码创建的 html 表转换为 json 对象? AngularJS

php创建动态html表

后台传回的Json数据怎么在HTML表单中显示并能动态编辑(添加、删除)