我正在以json格式存储表单数据。为了允许从先前创建的json文件中更改值,下面的(纯旧javascript)函数会将这些值从文件加载到表单中。此方法将还原下拉列表的值,但不带复选框。
我尝试存储复选框的值(“ on”或“ off”)和选中的状态(“ true”或“ false”),但都无法使用。
此外,我尝试在返回之前添加if语句,如下所示:
if (newArr[dataItem] === "true") {
document.getElementById(newArr[dataItem]).click();
} else {
return (inputItem.id === dataItem) ? (inputItem.value = newArr[dataItem]) : false;
}
以下是该函数的简化版本,可用于还原值:
function receivedText(e) {
let lines = e.target.result;
var newArr = JSON.parse(lines);
Object.keys(newArr).map(function (dataItem) {
inputs.map(function (inputItem) {
return (inputItem.id === dataItem) ? (inputItem.value = newArr[dataItem]) : false;
});
});
}
json数据如下:
{ "foo": "ws", "bar": "ws", "checkbox_value": "on", "other_data": "apple" }
简而言之,当从文件中加载数据并评估json字典时,checkbox_value似乎没有选择或取消选择该复选框。
答案 0 :(得分:1)
您需要更新checked
属性,并且需要将其设置为布尔值true
和false
,而不是字符串。您应该将checked
属性作为布尔值存储在JSON中。要加载值,请考虑以下代码:
Object.keys(newArr).map(function (dataItem) {
var inputItem = document.getElementById(dataItem);
if (inputItem.type === "checkbox") {
inputItem.checked = newArr[dataItem];
} else {
inputItem.value = newArr[dataItem];
}
});