【发布时间】:2017-06-18 04:01:13
【问题描述】:
我有一个表单,我想在 keyup 上将数据保存在本地存储中。
因此,如果用户返回表单,他们已经填写的数据可以从他们的 localStorage 中加载。
我有下面的see fiddle,它可以根据需要将数据存储在本地存储中。
但我无法使用这些数据预先填充表单。
我知道在我尝试加载时最接近的 ID 是未定义的,如何获取 Staff 的每个 id 的值以便我可以填充我的表单,或者有更好的方法吗?
<form id="myForm">
<div id="div-1" class="staff">
<input type="name" name="name" value="Tim">
<input type="number" name="age" value="18">
</div>
<div id="div-2" class="staff">
<input type="name" name="name" value="Sarah">
<input type="number" name="age" value="32">
</div>
<div id="div-3" class="staff">
<input type="name" name="name" value="Brendan">
<input type="number" name="age" value="48">
</div>
</form>
<script>
jQuery("input").keyup(function () {
var closestID = jQuery(this).closest('[id]').attr('id');
var staffArray = $("#" + closestID + " input").map(function () {
return {
"title": this.name,
"value": this.value
}
}).get();
//set that to localStorage
localStorage["id-" + closestID] = JSON.stringify(staffArray);
});
var getFromStore = function (closestID) {
//check if store values are null, if null, make store =[]
var store = [undefined, null].indexOf(localStorage["id-" + closestID]) != -1 ? [] : JSON.parse(localStorage["id-" + closestID]);
//check if store is empty
if (store.length != 0) {
//loop over store if it aint empty and append the content into myStorage div
for (var k in store) {
var myTitle = store[k]["title"];
var myVal = store[k]["value"];
console.log('myTitle ' + myTitle);
console.log('myVal ' + myVal);
$("#" + closestID + " input[name='" + myTitle + "']").attr( "value", myVal );
}
}
}
getFromStore(closestID);
</script>
【问题讨论】:
标签: javascript jquery html forms