javascript - localStorage导致页面无限刷新?

标签 javascript jquery

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

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

代码如下:

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 提交操作。其中一部分是重新加载页面。

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

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

关于javascript - localStorage导致页面无限刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859755/

相关文章:

javascript - Chrome 扩展中的 jQuery - 尽管正确包含但仍拒绝内联脚本

javascript - 如果切换了侧边栏,则停止滚动/多余空间

javascript - 如何阻止在 Google Blogger 模板中加载 CSS 和 js 文件?

javascript - 打开与我的网页不同的网页并阅读其内容/单击按钮等

ajax - MVC3 Ajax 子 Action

php - Laravel,使用jquery ajax返回响应400错误

c# - 有人用 Jint 进行可视化调试吗?

javascript - .off 不适用于回调

javascript - 砌体重新加载和重新加载项目不起作用

jquery - 如何在 PhoneGap 应用程序中使用 ONSEN-UI 实现 iOS 类型的 ON SWIPE DELETE 功能?