我有表单,我将多个复选框项作为数组发送到控制器,
<?php
foreach($groupsArray as $group)
{
?>
<label>
<input type="checkbox" class="icheck" name="groups[]" id="groups" value="<?php echo $group["id"];?>"> <?php echo $group['name']?> </label>
<?php
}
?>
对于数据库中的复选框值更新,一切正常,
现在,我正在做的是,从数据库获取值,我需要检查存储在数据库中的值,
我从PHP&lt;
获得低于json的响应groups: [{user_id: "2", group_id: "4", id: "4", name: "system Creators",…}]
下面我用作AJAX
if(objData.groups[0].group_id == $("#groups").val())
{
$("#groups").iCheck('check');
}
使用这个$(&#34;#groups&#34;)。val(),它总是取第一个复选框的值,所以有问题, 如何比较所有复选框的值与Json? 另外,如果groups数组有多个值,则意味着多维数组,那么更多的组呢?
提前致谢!
答案 0 :(得分:1)
您需要知道哪个checkbox
与哪个database value
相关。
这就是ID
上使用checkbox
的内容。你有"groups"
所有相同的东西 - 这是不好的做法。
使用:(请注意动态id
属性)
<?php
foreach($groupsArray as $group)
{
?>
<label>
<input type="checkbox" class="icheck" name="groups[]" id="chk<?php echo $group["id"];?>" value="<?php echo $group["id"];?>"> <?php echo $group['name']?> </label>
<?php
}
?>
然后从数据库中循环您的组对象:
for(var i = 0; i < groups.length; i++) {
var chk = document.getElementById("chk" + groups[i].id);
chk.checked = true;
}
答案 1 :(得分:1)
试试这个:
<强> PHP 强>:
<?php
$count=0;
foreach($groupsArray as $group)
{
?>
<label>
<input type="checkbox" class="icheck" name="groups[]" id="groups<?php echo $count;?>" value="<?php echo $group["id"];?>"> <?php echo $group['name']; ?> </label>
<?php
$count++;
}
?>
<强> Jquery的强>:
for(var i=0;i<objData.gourps.length;i++){
if(objData.groups[i].group_id == $("#groups"+i).val())
{
$("#groups"+i).iCheck('check');
}
}
答案 2 :(得分:0)
首先,将groups
复选框的ID更改为其类,因此请使用class="groups"
代替id="groups"
,如下所示:
<label><input type="checkbox" class="icheck" name="groups[]" class="groups" value="<?php echo $group["id"];?>"> <?php echo $group['name']?> </label>
接下来,使用jQuery .each
方法检查JSON对象中的所有复选框,如下所示:
$.each(objData, function(n, i){
if(i.group_id == $(".groups[name="+n+"]").val()){
$(".groups[name="+n+"]").iCheck('check');
}
});
答案 3 :(得分:0)
最后,这有效! 只查找来自DB的复选框并检查它们。
for(var i = 0; i < objData.groups.length; i++)
{
$("#groups" + objData.groups[i].group_id).iCheck('check');
}
感谢大家的支持!