2011-11-29 84 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对象上工作时,这是有用 。在这种情况下,输入和具有 匹配的数组的元素中的一个,将检查或而具有不匹配的 元件阵列将未选中的一个或一个值来选择 一个值的选项未选定,取决于类型。