Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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 将输入字段转换为数组并保存到本地存储_Javascript_Jquery_Arrays_Json_Local Storage - Fatal编程技术网

Javascript 将输入字段转换为数组并保存到本地存储

Javascript 将输入字段转换为数组并保存到本地存储,javascript,jquery,arrays,json,local-storage,Javascript,Jquery,Arrays,Json,Local Storage,我需要将几个输入字段转换为数组,以便将它们保存到本地存储 一个小脚本(jQuery)会扫描所有输入字段,并设置由输入字段ID确定的名称 HTML: <input class="field" type="checkbox" id="field-01"> I have done it! <input class="field" type="text" id="field-02"> Comment on how it went? function dataSave(){

我需要将几个输入字段转换为数组,以便将它们保存到本地存储

一个小脚本(jQuery)会扫描所有输入字段,并设置由输入字段ID确定的名称

HTML:

<input class="field" type="checkbox" id="field-01"> I have done it!
<input class="field" type="text" id="field-02"> Comment on how it went?
function dataSave(){
   $(".field").each(function(formField){
      var formFieldLoad = $(this).val(localStorage.field);
      formField = $(formField).val(this);
   });
}
因此,基本上我需要将输入字段(复选框、单选按钮、滑块(值属性驱动)和文本字段)中的数据和值驱动到数组中的本地存储,以便保存所有内容,而不仅仅是最后一个字段。我怎样才能做到这一点

此外,需要检查复选框是否选中,而文本字段需要保存其内容。这是否会导致保存进度出现问题

更新:我已尝试将所有字段转换为数组,但我不知道如何进一步使用该数组将其传递到本地存储。我已经浏览了整个互联网,我开始认为有很多方法可以做到这一点,但我无法找出适合我的情况的解决方案。

要持久化数据,请使用。然后,它将可用于以后的检索

需要注意的一点是,localStorage存储文本数据。如果要持久化对象,则必须在持久化对象之前对其进行编码,并在检索对象之后对其进行解码:

> test={a:1, b:2}
< Object {a: 1, b: 2}
> localStorage.setItem("test", test)
< undefined
> localStorage.getItem("test")
< "[object Object]"                                     // that's not very interesting
> localStorage.setItem("test", JSON.stringify(test))
< undefined
> JSON.parse(localStorage.getItem("test")) 
< Object {a: 1, b: 2}                                   //that's better
要持久化数据,请使用。然后,它将可用于以后的检索

需要注意的一点是,localStorage存储文本数据。如果要持久化对象,则必须在持久化对象之前对其进行编码,并在检索对象之后对其进行解码:

> test={a:1, b:2}
< Object {a: 1, b: 2}
> localStorage.setItem("test", test)
< undefined
> localStorage.getItem("test")
< "[object Object]"                                     // that's not very interesting
> localStorage.setItem("test", JSON.stringify(test))
< undefined
> JSON.parse(localStorage.getItem("test")) 
< Object {a: 1, b: 2}                                   //that's better

通常,您需要使用
添加JSON对象中的所有值和ID。然后使用
JSON.stringify()
localStorage.setItem()
将它们放入本地存储:

<input class="field" type="checkbox" id="field-01"> I have done it!
<input class="field" type="text" id="field-02"> Comment on how it went?
<input type="button" value="Save to LS" onclick="dataSave()">
<script>
    function dataSave(){
        var fields = {};
        $('.field').each(function(){
            fields[this.id] = this.value;
        })
        localStorage.setItem('fieldString',JSON.stringify(fields));

        console.log(localStorage.getItem('fieldString'));               // Output: {"field-01":"on","field-02":"1234"}
        console.log(JSON.parse(localStorage.getItem('fieldString')));   //Output: Object {field-01: "on", field-02: "1234"}
    }
</script>
我已经做到了!
你对事情的进展有何评论?
函数dataSave(){
变量字段={};
$('.field')。每个(函数(){
字段[this.id]=this.value;
})
setItem('fieldString',JSON.stringify(fields));
console.log(localStorage.getItem('fieldString'));//输出:{“field-01”:“on”,“field-02”:“1234”}
console.log(JSON.parse(localStorage.getItem('fieldString'));//输出:对象{field-01:“on”,field-02:“1234”}
}

如果您将来需要该对象,可以使用
localStorage.getItem('fieldString')轻松获取字符串。
通常,您需要使用
在JSON对象中添加所有值和ID。然后使用
JSON.stringify()
localStorage.setItem()
将它们放入本地存储:

<input class="field" type="checkbox" id="field-01"> I have done it!
<input class="field" type="text" id="field-02"> Comment on how it went?
<input type="button" value="Save to LS" onclick="dataSave()">
<script>
    function dataSave(){
        var fields = {};
        $('.field').each(function(){
            fields[this.id] = this.value;
        })
        localStorage.setItem('fieldString',JSON.stringify(fields));

        console.log(localStorage.getItem('fieldString'));               // Output: {"field-01":"on","field-02":"1234"}
        console.log(JSON.parse(localStorage.getItem('fieldString')));   //Output: Object {field-01: "on", field-02: "1234"}
    }
</script>
我已经做到了!
你对事情的进展有何评论?
函数dataSave(){
变量字段={};
$('.field')。每个(函数(){
字段[this.id]=this.value;
})
setItem('fieldString',JSON.stringify(fields));
console.log(localStorage.getItem('fieldString'));//输出:{“field-01”:“on”,“field-02”:“1234”}
console.log(JSON.parse(localStorage.getItem('fieldString'));//输出:对象{field-01:“on”,field-02:“1234”}
}

如果将来需要该对象,可以使用
localStorage.getItem('fieldString')

轻松获取字符串,该字符串取决于localStorage上存储的数据。如果是敏感的,你能在问题中加上虚拟数据吗?应用程序只是一个待办事项列表,所以没有太敏感的内容。我也有需要计入的滑块(jqueryui),但它们围绕着它们的value属性工作,所以应该不会有问题。这种本地存储集成只是暂时的,目的是帮助我在将应用程序与更大的系统集成之前进一步开发应用程序,然后该系统将保存的数据接收到MySQL数据库,因此在这一点上,本地存储将被丢弃,至少从生产版本中丢弃。请检查我所做的链接。请检查此链接。>您所需要的只是:将值放入数组后..这取决于存储在localstorage上的数据。如果是敏感的,你能在问题中加上虚拟数据吗?应用程序只是一个待办事项列表,所以没有太敏感的内容。我也有需要计入的滑块(jqueryui),但它们围绕着它们的value属性工作,所以应该不会有问题。这种本地存储集成只是暂时的,目的是帮助我在将应用程序与更大的系统集成之前进一步开发应用程序,然后该系统将保存的数据接收到MySQL数据库,因此在这一点上,本地存储将被丢弃,至少从生产版本中丢弃。请检查我所做的链接。请检查此链接。>你所需要的就是:在你把你的值放入一个数组中之后……谢谢你,你的解释很清楚,例子本身也是如此!让它像符咒一样工作。:)关于如何解析数组以便只获取字段ID:s(名称),而不获取值,有什么想法/技巧吗?欢迎您。在
fields
array(和
JSON.parse(localStorage.getItem('fieldString')
如果您从本地存储获取它),您有两个属性-名称(id)和值,因此在数组中穿行时,您可以再次使用jquery
$轻松解析它们。每个
-请参见此处:再次感谢,我已成功解析结果!现在是在保存表单时(重新加载页面时)再次填充表单的时候了,但这可能是一个全新问题的重点。谢谢你,你的解释很清楚,示例本身也是如此!让它像一个符咒一样工作。:)关于如何解析数组以便我只获取字段ID:s(名称),而不获取值,有什么想法/技巧吗?欢迎你。在
fields
array(和
JSON.parse(localStorage.getItem('fieldString')
如果您从本地存储获取它)中,您同时拥有属性-名称(id)和值,因此遍历数组时,您可以通过再次使用