Javascript 编辑表单时选中本地存储中的值

Javascript 编辑表单时选中本地存储中的值,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我已将html表单中的值存储到localStorage中,并将localStorage中的数据返回表单进行编辑。复选框值(MaterialName)作为数组存储到localStorage。原始复选框值通过ajax来自数据库。我需要做什么才能使localStorage中的值与数据库中的值匹配,并在编辑表单时再次检查?或者甚至有可能这样吗 // localstorage value { "FormID": 150, "CreateDate": "2019-09-17T00:00:00",

我已将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"
}
此函数用于从数据库中获取所有材料:

功能添加材料(材料){
$MaterialName.append(“”+material.MaterialName+“”);
}
$.ajax({
键入:“GET”,
url:“/api/materials”,
数据类型:“json”,
成功:功能(材料){
$。每个(材料、功能(i、材料){
添加材料(材料);
});
},
错误:函数(){
警报:('Virhe ladatatessa')
}
});
这是我尝试获取要重新检查的检查值的函数:

$(函数(){
//从本地存储带来数据
var lsdata=JSON.parse(localStorage.getItem('key');
//形成数据
$('#formid').val(lsdata.formid);
$('#createdate').val(lsdata.createdate);
$('#formfiller').val(lsdata.formfiller);
$('#customerlist').empty().append(lsdata.CustomerName.split(',').map(c=>newoption(c,c));
$('#contact').val(lsdata.CustomerContact);
$('#worklist').empty().append(lsdata.WorkName.split(',').map(c=>newoption(c,c));
$('#readytodate').val(lsdata.readytodate);
$(“#指令”).val(lsdata.instructions);
$('#amount').val(lsdata.amount);
$(“#materiallist”).append(“”+lsdata.MaterialName+“”);
});

除了MaterialName,其他一切都正常工作。它正在通过Xpohja、Tarra增加新的价值。我希望它能为那些Xpohja和Tarra添加“checked”,而不是新的值

我没有足够的声誉留下评论,但您的意思是希望复选框值设置为“Xpohja,Tarra”?或者你想要两个新的复选框?一个是“Xpohja”,另一个是“Tarra”

如果您想要一个带有值的复选框,我在下面留下了一个解决方案

var lsdata=“Xpohja,Tarra”;
$(“#材料列表”)。附加(“”);
$(“#物料清单输入”).val(lsdata)

为每个复选框指定一个与物料名称相同的id,如下所示:

<input type="checkbox" name="vehicle" value="Bike" id="Xpohja">Xpohja <br>
<input type="checkbox" name="vehicle" value="Car" id="Tarra">Tarra<br>
var lsdata=JSON.parse(localStorage.getItem('key');
var chkArray=lsdata.MaterialName.split(',');
对于(var i=0;i
您的意思是在输入旁边的
localStorage
中看不到
MaterialName
?(此行:
$(“#materiallist”).append(“+lsdata.MaterialName+”;
)复选框已经来自数据库,我希望选中LocalStorage中的那些值,而不是新的复选框。用户已选中值xpohja和tarra,并且在以后编辑表单时,应选中这些相同的复选框。这些值来自另一个数据库,所以我不知道如何将ID添加到每个复选框中?值不是“硬编码”的。您可以共享JSFIDLE吗?我以前没有使用过jsfidlle,所以我不知道这是否正确。我不能将值硬编码到输入,因为所有值都来自其他数据库,请参阅原始问题中的函数“addMaterials”。我是否可以将LocalStorage MaterialName值与数据库中的MaterialName值进行比较,如果值相同,则将其置于“选中”状态?我不知道这是否可行,但上一次JSFIDLE并没有给我足够的帮助,若用户在编辑表单时需要添加新材料,我仍然需要数据库中的所有值。
$('#id').attr('checked', true)
var lsdata = JSON.parse(localStorage.getItem('key'));
var chkArray = lsdata.MaterialName.split(',');
for(var i = 0; i < chkArray.length; i++){
   $('input[type="checkbox"]').find('[value="'+ chkArray[i] +'"]').attr('checked', true)
}