【问题标题】:How to save form values to JSON with save dialog box?如何使用保存对话框将表单值保存到 JSON?
【发布时间】:2014-11-16 16:22:06
【问题描述】:

这个JS Fiddle 将提交表单值,但我希望提交按钮序列化为 JSON 并打开一个保存对话框。它必须离线工作,所以只有 HTML 和 JS。

问题

是否存在可以做到这一点的 JQuery 插件?如果没有,我应该查看哪个 JS 函数?

JS

$("#myform").dform({
    "action" : "index.html",
    "method" : "get",
    "html" :
    [
        {
            "type" : "p",
            "html" : "You must login"
        },
        {
            "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

<form id="myform"></form>

CSS

body {
    font-family: sans-serif;
    padding: 10px;
}

label, input {
    display: block;
    margin-top: 10px;
}

【问题讨论】:

  • 你应该检查 dform 文档或者只是在标准上使用 .serialize()
  • 不完全相关,但是离线时您在哪里提交表单?

标签: javascript jquery html json forms


【解决方案1】:

在jQuery中有serializeArray()可以帮助你轻松构建json:

$("#myform").on('submit', function(e){

    // prevent default submit action
    e.preventDefault();

    var serialized = $(this).serializeArray(),
        obj = {};

    // build key-values
    $.each(serialized, function(){
       obj [this.name] = this.value;
    });

    // and the json string
    var json = JSON.stringify(obj);

    console.log(json);
    // send your data here...

});

对话框是一个更广泛的主题;)

【讨论】:

  • 保存对话框是指操作系统提供的标准。例如。当您点击下载链接时。
  • 如果没有生成要保存的文件的服务器,它会变得有点复杂。您必须构建一个Blob,将数据附加到它,然后获取它的 URL。你确定这是你想要的吗?因为将用户名和密码保存到 json 文件对我来说有点奇怪
  • 好的,我明白了问题...用户名/密码只是一个示例。我想制作一个信息亭,人们可以在纸上看到一些图片,他们应该在浏览器中写下他们看到的内容,然后将结果保存到文件中。电脑只有 Firefox/Chrome,没有网络连接。
  • 感谢 blob 关键字。 FileSaver.js 可以做到这一点。 github.com/eligrey/FileSaver.js
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-26
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多