【发布时间】:2019-09-19 10:38:42
【问题描述】:
我已将值从 html 表单存储到 localStorage,然后我从 localStorage 取回数据以进行编辑。选中的复选框值 (MaterialName) 以数组形式存储到 localStorage。原始复选框值通过 ajax 来自数据库。我需要做什么才能从数据库中获取 localStorage 匹配值中的这些值,并在编辑表单时再次检查?或者甚至可以这样吗?
// localstorage value
{
"FormID": 150,
"CreateDate": "2019-09-17T00:00:00",
"FormFiller": "JOkuMuu",
"CustomerName": "Wsoy",
"CustomerContact": "Masa",
"WorkName": "Lajitelmapakkaus",
"ReadyToDate": "2019-09-19T00:00:00",
"Instructions": "Tarkasta kirjat ",
"Amount": 50,
"MaterialName": "Xpohja,Tarra"
}
这是从数据库中获取所有材料的功能:
function addMaterials(material) {
$MaterialName.append('<input type="checkbox" value="' + material.MaterialName + '">' + material.MaterialName + ' </input>');
}
$.ajax({
type: 'GET',
url: '/api/materials',
dataType: 'json',
success: function(materials) {
$.each(materials, function(i, material) {
addMaterials(material);
});
},
error: function() {
alert: ('Virhe ladattaessa')
}
});
这是我试图重新检查检查值的函数:
$(function() {
//bring data from localStorage
var lsdata = JSON.parse(localStorage.getItem('key'));
//put data to form
$('#formid').val(lsdata.FormID);
$('#createdate').val(lsdata.CreateDate);
$('#formfiller').val(lsdata.FormFiller);
$('#customerlist').empty().append(lsdata.CustomerName.split(',').map(c => new Option(c, c)));
$('#contact').val(lsdata.CustomerContact);
$('#worklist').empty().append(lsdata.WorkName.split(',').map(c => new Option(c, c)));
$('#readytodate').val(lsdata.ReadyToDate);
$('#instructions').val(lsdata.Instructions);
$('#amount').val(lsdata.Amount);
$('#materiallist').append('<input type="checkbox" checked>' + lsdata.MaterialName + ' </input>');
});
除 MaterialName 外,其他一切都在工作。它通过 Xpohja,Tarra 增加了新的价值。我希望它为那些 Xpohja 和 Tarra 添加“检查”,而不是新值。
【问题讨论】:
-
您的意思是在输入旁边的
localStorage中看不到MaterialName? (本行:$('#materiallist').append('<input type="checkbox" checked>' + lsdata.MaterialName + ' </input>');)
标签: javascript jquery checkbox