【问题标题】:Saving multiple checkbox into localstorage without overwritten将多个复选框保存到本地存储中而不被覆盖
【发布时间】:2017-02-06 10:49:38
【问题描述】:

我在表单中有一个复选框,我希望它在提交表单时将复选框的状态(真/假)写入本地存储。

因此,如果用户选中该框并单击提交,则存储在本地存储中的值将为“true”。但是,如果用户重新打开应用程序并再次提交表单,我不希望数据被覆盖,例如,如果用户下次重新打开应用程序并决定不选中该框特定会话,本地存储中的值应该是“真假”,等等。

我想我应该使用 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>

【问题讨论】:

    标签: javascript json cordova checkbox local-storage


    【解决方案1】:

    你应该从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);
    }
    

    【讨论】:

    • 我不认为这就是我的意思。我的意思是我希望复选框的状态连续保存到本地存储而不覆盖任何内容,因此例如本地存储中的值可能是“真、假、假、假、真......”等,具体取决于是否用户在每个会话中是否选中了该框
    【解决方案2】:

    现在在 jQuery 中:

    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));
        }
    
    
    }
    

    从本地存储中获取已保存的支票

    function getSavedcheck(){
    
        var storedMedA = JSON.parse(localStorage.getItem("MedA"));
    
        return storedMedA;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 2016-04-22
      • 2020-03-20
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      相关资源
      最近更新 更多