从JSON数据填充复选框

时间:2015-01-29 12:31:37

标签: javascript jquery json

我在尝试使用来自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文档给我正确的结果。

Console result

1 个答案:

答案 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);
        }
    }
}