【发布时间】:2016-07-20 20:13:58
【问题描述】:
我的应用程序将填写的表单数据(带有 ID 和值的输入字段)保存到本地存储,甚至成功加载它们,将解析后的 ID 和值重新分开。
问题是,一旦页面重新加载,我无法从已保存到本地存储的数据中预先填写表单备份。保存的数据保留在浏览器的资源中,控制台记录每个输入字段的正确值。但是,页面本身没有显示任何内容。
这是我的 HTML 结构的示例:
<form id="myForm" method="post">
<input type="submit" onclick="dataSave();" value="Save">
<input class="formField" type="checkbox">Task done!
<input class="formField" type="text">How it went?
</form>
这是执行保存和加载到本地存储的当前 JavaScript:
if (typeof(Storage) !== "undefined"){
// Loading data
function dataLoad(){
var inputParse = JSON.parse(localStorage.getItem('fieldString'));
var inputId;
var inputValue;
var inputType;
$.each(inputParse, function(key, value){
inputId = key;
inputValue = value;
if (inputValue === "true" || inputValue === "false"){
inputType = inputValue;
}
});
$(".formField").each(function(){
inputId = this.id;
document.getElementById(inputId);
if (inputType === "true"){
$(inputId).attr("checked", "checked");
} else {
$(inputId).val(inputValue);
}
});
}
// Saving data
function dataSave(){
var mngrFields = {};
$(".mngr-field").each(function(){
if (this.type == "radio" || this.type == "checkbox"){
mngrFields[this.id] = this.checked;
} else {
mngrFields[this.id] = this.value;
}
});
localStorage.setItem('fieldString', JSON.stringify(mngrFields));
}
要在页面加载后运行dataLoad(),我的$(document).ready(function(){ }); 中有一个简单的dataLoad();。
我怎样才能用保存的数据填写表格?我尝试了一些document.GetElementById 的解决方法,但没有成功。
【问题讨论】:
-
也许您应该使用
$('#'+inputId)而不是$(inputId),假设您只保存id 而没有前面的#。 -
感谢您的关注!完全错过了。但是,它仍然没有加载表单的数据。 :(
-
你能显示
console.log(inputParse);的输出吗?了解如何保存数据会很有帮助。因为如果数据被正确插入到相应的输入类型,填充字段应该足够简单。 -
inputParse只返回[object Object]作为回报,这是因为内容保存到本地存储吗?在本地存储中,fieldString键的值如下:{"payment_type_mngr_1_01":false,"payment_type_mngr_1_02":"90%","payment_type_mngr_1_03":true,"payment_type_mngr_1_04":false,"payment_type_mngr_1_06":false,"payment_type_mngr_1_07":false,"payment_type_mngr_1_08":false,"payment_type_mngr_1_10":false,"payment_type_mngr_1_11":false,"payment_type_mngr_1_12":"0%"}
标签: javascript jquery forms local-storage