繁体   English   中英

localStorage是否导致页面无限刷新?

[英]localStorage causes infinite refreshing the page?

我正在做一个简单的形式localStorage。 用户打开表单时,所有保存的数据将显示在相应的输入字段中,并且用户填写表单后,所有信息都将被保存。

现在,我可以保存数据并显示数据,就像当我重新打开页面时,在无限刷新页面时显示数据。 有人知道这是怎么发生的吗?

这是代码:

HTML:

<form id="formData">
<fieldset>
    <legend>Please fill in</legend>
    <label for="name">Name:</label>
    <input name="name" type="text"><br/>
    <label for="txt">Introduction:</label>
    <input name="txt" type="textarea"><br/>
    <label for="someCheck">Checkbox:</label>    
    <input name="someCheck" type="checkbox"><br/>
    <label for="someRadio">Radio:</label>   
    <input name="someRadio" type="radio"><br/>          
    <input type="submit">
</fieldset>

CSS:

fieldset{
    width: 50%;
    margin: 0 auto;
    padding: 5px 20px;
    box-sizing: border-box;
}
label{
    width: 18%;
    display: inline-block;
}
input{
    margin: 0;
    padding: 0;
}
input[type=submit]{
    padding: 2px 10px;
    outline: none;
    border-radius: 4px;
    margin: 6px 0;
    cursor: pointer;
}

jQuery:

if(Modernizr.localstorage){
    var form=document.querySelector('#formData');
    if(localStorage.formData){
        //step one: 
        //display the stored value, title=my+title&...&
        var fd;
        fd=localStorage.formData.split('&'); //['title=my+title']
        $.each(fd,function(index,pair){
            pair=pair.split('=');//title,my+title
            console.log(pair[0]+":"+pair[1]);
            if(pair[1]==="on"){
                form[pair[0]].checked=true;
            }else{
                form[pair[0]].value=unescape(pair[1]).replace(/\+/g," ");               
            }
        });
    }
    //step two:
    //save form to storage when filled outline
    form.submit(function(e){
        //serialize form data to url
        localStorage.formData=$(this).serialize();
        alert('Okay, refresh the page now.');
        e.preventDefault();
    });

}

无限重载是由form.submit()引起的。 这将触发HTML提交操作。 其中一部分是重新加载页面。

我怀疑您真正想要的是监听Submit事件并保存本地存储:

document.querySelector("#formData").addEventListener("submit", function(e){
    localStorage.formData=$(this).serialize();
    alert('Okay, refresh the page now.');
    e.preventDefault();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM