2017-03-12 58 views
1

我想從我的JSON數組中選中複選框,但它只返回值爲「1」的複選框;我錯過了什麼?從JSON中選擇複選框

這裏是我的小提琴http://jsfiddle.net/geegirls3/acx1yLex/

<div id="checkboxes"> 
     <input type="checkbox" name="qcol2" value="1" > Sarah 
     <br /> 
     <input type="checkbox" name="qcol2" value="9" > Sundae 
     <br /> 
     <input type="checkbox" name="qcol2" value="10" > Summer 
     <br /> 
     <input type="checkbox" name="qcol2" value="11" > GeeZee 
     <br /> 
     <input type="checkbox" name="qcol2" value="12" > Husband 
     <br /> 
    </div> 

$(document).ready(function() { 
var initValues = [{my_id: "10"}, {my_id: "11"}, {my_id: "12" }]; 
var myjson = JSON.stringify(initValues); 
//alert(myjson); 

$('#checkboxes').find(':checkbox[name^="qcol2"]').each(function() { 
    $(this).prop("checked", ($.inArray($(this).val(), myjson) != -1)); 
    //alert(myjson); 
    }); 
}); 

回答

0

JSON.stringifyinitValues地圖轉換成一個長字符串,而不是到一個數組,你可以使用​​用。

如果您想從JSON字符串中選擇複選框,您必須先解析它,使用id值準備一個數組,然後您可以使用inArray來選擇複選框。

檢查驗證碼:

var myjson = JSON.stringify(initValues); 
    var parsed = JSON.parse(myjson); 

    var myarray = []; 
    $.each(parsed,function(key, value) 
    { 
    myarray.push(value["my_id"]); 
    }); 

    $('#checkboxes').find(':checkbox[name^="qcol2"]').each(function() { 
     $(this).prop("checked", ($.inArray($(this).val(), myarray) != -1)); 
     //alert(myjson); 
    }); 
+0

它的工作謝謝。根據你的幫助,我改變了我的代碼。我的小提琴https://jsfiddle.net/geegirls3/70jd4nv8/ – GeeGirls3