2015-10-19 101 views
-1

我使用HTML5 sessionStorage来帮助在刷新时填充表单字段,但我遇到一些奇怪的错误。基本上,如果我改变任何值,表单停止工作。HTML5 sessionStorage未按预期工作

我现在写的这个表格就在这里; http://jsfiddle.net/takuhii/rjsjj9by/1/

HTML:

<form id="storeFields" method="post" action=""> 
    <label>First Name:</label> 
    <input type="text" name="firstname" id="firstName" class="form-control" value="" /> 

    <label>Last Name:</label> 
    <input type="text" name="lastname" id="lastName" class="form-control" value="" /> 

    <label>Email:</label> 
    <input type="email" name="email" id="email" class="form-control" value="" /> 

    <input type="submit" class="demo-button" value="Submit" /> 
</form> 

JAVASCRIPT:

function storeDetails() { 
    if (sessionStorage["firstname"]) { 
     $('#firstName').val(sessionStorage["firstname"]); 
    } 
    if (sessionStorage["lastname"]) { 
     $('#lastName').val(sessionStorage["lastname"]); 
    } 
    if (sessionStorage["email"]) { 
     $('#email').val(sessionStorage["email"]); 
    } 
} 
storeDetails(); 

$('.form-control').change(function() { 
    sessionStorage[$(this).attr('firstName')] = $(this).val(); 
    sessionStorage[$(this).attr('lastName')] = $(this).val(); 
    sessionStorage[$(this).attr('email')] = $(this).val(); 
}); 

$('#storeFields').submit(function() { 
    sessionStorage.clear(); 
}); 

我衍生它从该表格是在这里; http://jsfiddle.net/takuhii/45zfpfru/8/

HTML:

<form id="storeFields" method="post" action=""> 
    <label>Name:</label> 
    <input type="text" name="name" id="name" class="stored" value="" /> 

    <label>Email:</label> 
    <input type="email" name="email" id="email" class="stored" value="" /> 

    <label>Message:</label> 
    <textarea name="message" id="message" class="stored"></textarea> 

    <input type="submit" class="demo-button" value="Submit" /> 
</form> 

JAVASCRIPT;

function storeDetails() { 
    if (localStorage["name"]) { 
     $('#name').val(localStorage["name"]); 
    } 
    if (localStorage["email"]) { 
     $('#email').val(localStorage["email"]); 
    } 
    if (localStorage["message"]) { 
     $('#message').val(localStorage["message"]); 
    } 
} 
storeDetails(); 

$('.stored').keyup(function() { 
    localStorage[$(this).attr('name')] = $(this).val(); 
}); 

$('#storeFields').submit(function() { 
    localStorage.clear(); 
}); 

我不明白的是简单地改变它看起来的变量,是如何把整个形式?

任何帮助将不胜感激,因为我实在看不出有什么不对

如果这是另外一个问题重复,我提前道歉,因为我试图寻找,但没找到满意的答复...... 干杯 达伦

+1

你看过在开发者控制台中打印的错误吗?如果是这样,你做了什么尝试和解决它们? – meagar

+0

有没有错误,它只是不会将信息保存到sessionStorage :( – Takuhii

回答

1

在您的JS试试这个:

$('.form-control').change(function() { 
    sessionStorage[$(this).attr('id')] = $(this).val(); 
}); 

你想使用id属性(名字,姓氏,电子邮件)的值来设定的关键正确的会话值。在你的代码中,你正在寻找不存在的属性。

+0

我会给它一个旋风,但我也这么认为。我已经尝试命名所有东西都一样都称为firstName,但形式只是当所有的东西都叫做名字时,开心:S – Takuhii