从字典还原复选框状态

时间:2019-05-01 16:01:00

标签: javascript html

我正在以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似乎没有选择或取消选择该复选框。

1 个答案:

答案 0 :(得分:1)

您需要更新checked属性,并且需要将其设置为布尔值truefalse,而不是字符串。您应该将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];
    }
});