将多个复选框保存到localstorage中而不会覆盖

时间:2016-09-28 12:38:38

标签: javascript json cordova checkbox local-storage

我有一个复选框,我希望它在提交表单时向localstorage写入复选框的状态(true / false)。

因此,如果用户选中该框并单击“提交”,则存储在localstorage中的值将为“true”。然而,我不想要的是,如果用户重新打开应用程序并再次提交表单,则会覆盖数据,例如,如果用户下次重新打开应用程序并决定不选中该框特定会话,localstorage中的值应为“true,false”,依此类推。

我想我应该使用JSON.stringify但不确定如何在这里集成。

这是我的js(我正在使用phonegap)

document.addEventListener("deviceready",onDeviceReady,false);

function onDeviceReady() {
            document.getElementById("xbutton").addEventListener("click",savecheck,false); }

function savecheck(){
        var checkb = document.getElementById("MedA");
        localStorage.setItem("MedA", checkb.checked);
    }

HTML:

<form>
            <div id='medA'>
                <input type="checkbox" id="MedA" name="Med" value="A">Medication A
             </div>
<input id="xbutton" type="button" onClick="savecheck()" value="Submit">
</form>

2 个答案:

答案 0 :(得分:0)

您应该从localStorage加载复选框状态,因此如果用户提交表单而不修改复选框状态,则不会更改:

document.addEventListener("deviceready",onDeviceReady,false);

function onDeviceReady() {
  document.getElementById("xbutton").addEventListener("click",savecheck,false);
  document.getElementById("xbutton").checked = localStorage.getItem("MedA");
}

function savecheck(){
  var checkb = document.getElementById("MedA");
  localStorage.setItem("MedA", checkb.checked);
}

答案 1 :(得分:0)

现在在jQuery中:

<div class = "parentDiv"> 
<div style='float:left'>

<button type="button" id = "myButton">Button 1</button>
      <div class = "childDiv", id = "dropdown"> 
          <div class = "cont"> Point 1</div>
          <div class = "cont"> Point 2</div>
      </div>
</div>
<div style='float:left'>
      <button type="button" id = "myButton2">Button 2</button>
      <div class = "childDiv", id = "dropdown2"> 
          <div class = "cont"> Point 3</div>
          <div class = "cont"> Point 4</div>
      </div>
      </div>
</div>

从本地存储使用

获取保存的支票
var MedA = [100];
localStorage.setItem("index",0);

function savecheck(){

    if($('input[name="chk[]"]:checked')){
        MedA[localStorage.getItem("index")] = $('input[name="chk[]"]').val();
        localStorage.setItem("index",localStorage.getItem("index")+1);
        localStorage.setItem("MedA", JSON.stringify(MedA));
    }


}