我在尝试使用来自JSON对象的表单重新填充时遇到问题。我已经使用了JSON.stringify(name)和值,它返回了我认为可能有用的数据格式类型。但似乎无法进入$ .each方法
function fetchOrderFromLocalStorage() {
PROCESS_SAVE = true;
var mcs = localStorage.getItem(REPORTS_KEY);
console.log(mcs);
var jsn = JSON.parse(mcs);
console.log(jsn);
if (mcs.length == 0) {
return false;
}
$.each(jsn, function (name, val) {
var $el = $("input[name='" + name + "']"),
type = $el.attr('type');
console.log(JSON.stringify(name) + ":" + JSON.stringify(val));
switch (type) {
case 'checkbox':
$el.attr('checked', 'checked');
break;
case 'radio':
$el.filter('[value="' + val + '"]').attr('checked', 'checked');
break;
default:
$el.val(val);
}
});
//console.log(jsn);
//for (var i = 0; i < jsn.length; i++) {
// var formInput = jsn[i];
// $("form input[name='" + formInput.name + "']").val(formInput.value);
//}
}
底部注释掉的代码可以工作,但是我想填充复选框,所以我尝试了一些已经检查过的代码。所以我正在尝试但我的数据格式不正确。我想我希望JSON.Stringify()作为sonsole根据jQuery文档给我正确的结果。
答案 0 :(得分:0)
试试这个
function fetchOrderFromLocalStorage() {
PROCESS_SAVE = true;
var mcs = localStorage.getItem(REPORTS_KEY);
console.log(mcs);
var jsn = JSON.parse(mcs);
console.log(jsn);
if (mcs.length == 0) {
return false;
}
for (var i = 0; i < jsn.length; i++) {
var formInput = jsn[i],
$el = $("input[name='" + formInput.name + "']"),
type = $el.attr('type');
switch (type) {
case 'checkbox':
$el.attr('checked', 'checked');
break;
case 'radio':
$el.filter('[value="'+formInput.value+'"]').attr('checked', 'checked');
break;
default:
$el.val(formInput.value);
}
}
}