我正在尝试根据检索到的 JSON 对象填充我的输入字段。我的表单中的字段名称类似于:
- 全名
- account.enabled
- 国家.XXX.XXXX
该函数应为上述字段返回如下内容
- 数据[“全名”]
- aData["帐户"]["启用"]
- aData["国家"]["XXX"]["XXXX"]
我应该如何编写一个返回给定 HTML 字段名称的匹配 JSON 条目的函数?
我正在尝试根据检索到的 JSON 对象填充我的输入字段。我的表单中的字段名称类似于:
该函数应为上述字段返回如下内容
我应该如何编写一个返回给定 HTML 字段名称的匹配 JSON 条目的函数?
您可以使用附加的方法,该方法将递归地在 JSON 对象中查找给定路径,如果不匹配,将回退到默认值 (def)。
var get = function (model, path, def) {
path = path || '';
model = model || {};
def = typeof def === 'undefined' ? '' : def;
var parts = path.split('.');
if (parts.length > 1 && typeof model[parts[0]] === 'object') {
return get(model[parts[0]], parts.splice(1).join('.'), def);
} else {
return model[parts[0]] || def;
}
}
你可以这样称呼它:
get(aData, 'country.XXX.XXXX', ''); //traverse the json object to get the given key
遍历表单元素,获取它们的名称,在“.”上拆分,然后访问 JSON 对象?
就像是:
var getDataValueForField = function (fieldName, data) {
var namespaces = fieldName.split('.');
var value = "";
var step = data;
for (var i = 0; i < namespaces.length; i++) {
if (data.hasOwnProperty(namespaces[i])) {
step = step[namespaces[i]];
value = step;
} else {
return (""); // safe value
}
}
return (value);
};
var populateFormFields = function (formId, data) {
var fields = document.querySelectorAll('#' + formId + ' input');
for (var i = 0; i < fields.length; i++) {
fields[i].value = getDataValueForField(fields[i].name, data);
}
};
populateFormFields('myForm', fetchedFromSomeWhere());