以json的形式存储localstorage值

时间:2016-05-03 09:07:53

标签: javascript jquery

您好我正在尝试保存一些输入[type =" text"]并在本地存储中输入[type =" hidden"]值。以下是JS:

$('.proceed_btn').on('click', function(){

    $('input[type="text"]').each(function(){    
      var id = $(this).attr('id');
      var value = $(this).val();
      localStorage.setItem(id, value);
    }); 
    $('input[type="hidden"]').each(function(){    
      var id = $(this).attr('id');
      var value = $(this).val();
      localStorage.setItem(id, value);
    }); 

});

价值得到了完美的存储。但我想以json格式存储这些值。但是如何将这两个值保存在一个变量中。例如:

order: {
   id: '', 
   product: '',
   service: '',
   name: ''
} 

我已经检查了JSON stringify但是如何一起实现不同类型的输入

3 个答案:

答案 0 :(得分:1)

只需构建一个对象然后stringify即可。例如,如果我假设您的name元素的input是您要在对象上使用的名称:

$('.proceed_btn').on('click', function(){
    // Blank to start with
    var order = {};

    // Loop through all inputs...
    $('input[type="text"], input[type="text"]').each(function(){
      // ...adding their values as properties
      order[this.name] = this.value;
    }); 

    // Store that object in JSON format
    localStorage.setItem("order", JSON.stringify(order));
});

稍后如果要检索它并根据其值设置输入:

var order = JSON.parse(localStorage.getItem("order") || "null");
if (order) {
    $('input[type="text"], input[type="text"]').each(function(){
        if (this.name in order) {
            this.value = order[this.name];
        } else {
            this.value = "";
        }
    });
}

答案 1 :(得分:0)

编写localstorage时只有2个参数:

离。 localStorage.setItem('car',car); 第一个参数实际上是键,第二个参数是值;

你已经通过了3个错误的参数。

如果可以在localstorage中存储多个值,请创建该值的对象并将该对象写入localstorage:

cqlsh

答案 2 :(得分:0)

我认为这会有所帮助。

var objectToSave = {};
$('.proceed_btn').on('click', function(){

$('input[type="text"],input[type="hidden"]').each(function(){
  var elem = $(this);
  var id = elem.attr('id');
  var value = elem.val();
  objectToSave[id] = value;
}); 
  localStorage.setItem('order', JSON.stringify(objectToSave));
});