Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于json数组值选择html复选框_Javascript_Php_Jquery_Arrays_Json - Fatal编程技术网

Javascript 基于json数组值选择html复选框

Javascript 基于json数组值选择html复选框,javascript,php,jquery,arrays,json,Javascript,Php,Jquery,Arrays,Json,我有一个表单,其中我将多个复选框项作为数组发送给控制器 <?php foreach($groupsArray as $group) { ?> <label> <input type="checkbox" class="icheck" name="groups[]" id="groups" value="<?php echo $group["id"];?>"> <?php echo $group['name']?>

我有一个表单,其中我将多个复选框项作为数组发送给控制器

<?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
}
?>
下面我将其用作AJAX

if(objData.groups[0].group_id == $("#groups").val())
    {
        $("#groups").iCheck('check');
    }
使用此$(“#groups”).val(),它总是接受第一个复选框的值,因此存在问题, 如何将所有复选框的值与Json进行比较? 另外,如果组数组将有多个值,意味着多维数组,那么会有更多的组吗


提前谢谢

您需要能够知道哪个
复选框
与哪个
数据库值
相关

这就是
复选框上的
ID
的用途。它们都是
“组”
——这是一种不好的做法

用法:(注意动态
id
属性)


然后从数据库中循环组对象:

for(var i = 0; i < groups.length; i++) {
   var chk = document.getElementById("chk" + groups[i].id);
   chk.checked = true;
}
for(变量i=0;i
试试这个:

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++;
}
?>
for(var i=0;i<objData.gourps.length;i++){
    if(objData.groups[i].group_id == $("#groups"+i).val())
    {
        $("#groups"+i).iCheck('check');
    }
}

Jquery

<?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++;
}
?>
for(var i=0;i<objData.gourps.length;i++){
    if(objData.groups[i].group_id == $("#groups"+i).val())
    {
        $("#groups"+i).iCheck('check');
    }
}

对于(var i=0;i首先,将
groups
复选框的id更改为它的class,因此使用
class=“groups”
而不是
id=“groups”
,如下所示:

<label><input type="checkbox" class="icheck" name="groups[]" class="groups" value="<?php echo $group["id"];?>"> <?php echo $group['name']?> </label>
$.each(objData, function(n, i){
    if(i.group_id == $(".groups[name="+n+"]").val()){
        $(".groups[name="+n+"]").iCheck('check');
    }
});
终于,这成功了! 仅查找来自DB的复选框并选中这些复选框

for(var i = 0; i < objData.groups.length; i++) 
{
    $("#groups" + objData.groups[i].group_id).iCheck('check');
}
for(var i=0;i

谢谢大家的支持!

谢谢,这看起来很简单,很快就接近我的答案,嗯,不仅仅是数据库中存储的检查值吗?这不起作用。同意@Shaun,我混合了Shaun和你的示例,但仍然有问题,首先从i=0开始,没有groups0,因为数据库中没有group_id=0,第二-如果我在数组中只有2个值和5个复选框,那么它将不会循环5次,所以其余3个复选框将被跳过!我仍然有相同的问题!所以你想在数据库中存储所有值,无论是否选中??所以不要混合-只使用我的;)我不使用循环的索引,也不接触你的组ID。元素ID应始终是唯一的groups.length的值是多少?是数组长度吗?如果是,那么当我只有2个数组时,它将如何选中5个复选框?是的,这是您的组数组和长度。如果数据库中只有2项,为什么要“检查”5项?如果你的意思是像勾选/勾选-你只想勾选数据库中的那些是吗?如果有5个复选框,它将只检查你保存的那些。嗯,现在似乎工作了。这是典型的iCheck插件,它让我改变了for循环的最后一行,很好。顺便问一下,动态id属性是唯一的吗?我有两对相同类型的复选框值,所以我也需要申请另一对,相同的函数?所以你可以有两个相同的ID?如果是这种情况,您需要某种唯一标识符。也许是组id和组id的组合?我不完全明白你的意思。我的意思是我有另一组复选框权限,比如组。我还获得了另一个JSON权限,所以我需要使用permissions.length复制另一个forloop,所以我想知道这个动态id属性的作用是什么?它可以在另一个for循环中重用吗?