2011-11-29 87 views
7

我回來,我分裂和填充我的陣列,像這樣一個JSON數據結構:如何根據值檢查複選框?

var arrayValues = data.contents.split('|'); 

// arrayValues = 1,3,4 

如何檢查基於陣列值相應的複選框?

我的HTML看起來像這樣:

<div id="divID"> 
    <input type="checkbox" name="test" value="1" /> Test 1<br /> 
    <input type="checkbox" name="test" value="2" /> Test 2<br /> 
    <input type="checkbox" name="test" value="3" /> Test 3<br /> 
    <input type="checkbox" name="test" value="4" /> Test 4<br /> 
    <input type="checkbox" name="test" value="5" /> Test 5<br />       
</div> 
+0

什麼標準會導致你檢查/取消選中框 – JaredPar

回答

15

試試這個使用屬性選擇

$.each(arrayValues, function(i, val){ 

    $("input[value='" + val + "']").prop('checked', true); 

}); 
+0

這工作很好......我所要做的只是包括父div標籤。謝謝! – Paul

+0

太棒了,只要你能感謝就把它標記爲答案。 – ShankarSangoli

+0

這應該是'.prop('checked',true)' - 儘管JS認爲字符串「checked」爲真,所以最終結果是一樣的。 – Blazemonger

1

您可以通過數組循環和jQuery的做一個屬性搜索

var i = 0; 
while (arrayValues.length < i) { 
    var val = arrayValues[i]; 
    $('#divID input[value="' + val + '"]').prop('checked', 'checked'); 
    i++; 
} 

文檔:http://api.jquery.com/attribute-equals-selector/

7

的Javascript

$.each(arrayValues, function (index, value) { 
    $('input[name="test"][value="' + value.toString() + '"]').prop("checked", true); 
}); 
+1

這看起來比ShankarSangoli的解決方案更準確,但我不明白爲什麼中間的'.toString()'是必需的。在所有情況下,「價值」肯定是一個字符串。 – Blazemonger

+0

@ mblase75 ...只是我的習慣。 –

+0

是的,作者可能已將toString處理值爲整數的情況,但ya也是DOM中的字符串類型 –

0

好吧,我花了片刻代碼理清我的錯誤。 我想這個問題現在回答ShankarSangoli

我希望你不介意我張貼我的解決辦法的方式。我只是好奇,如果這是對性能等

var arrayValues = new Array(1,3,4); 

$('#divID input').filter(function(){ 
    return ($.inArray(parseInt($(this).attr('value')), arrayValues)) != -1; 
}).attr('checked', 'checked'); 
0

更簡單更糟糕:

$('input[name="test"]').val(arrayValues); 

這將檢查從數組中的值,並取消其他人。

從jQuery的doc:http://api.jquery.com/val/

VAL()允許你傳遞元件值的數組。含有像<輸入 類型= 「複選框」 >,< INPUT TYPE = 「無線電」 >,和<選項>個 <內選擇>元件jQuery對象上工作時,這是有用 。在這種情況下,輸入和具有 匹配的數組的元素中的一個,將檢查或而具有不匹配的 元件陣列將未選中的一個或一個值來選擇 一個值的選項未選定,取決於類型。