繁体   English   中英

根据json数组值选择html复选框

[英]selecting html checkbox based on json array values

我有表单,我将多个复选框项目作为数组发送到控制器,

<?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 的 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');
    }

有了这个 $("#groups").val(),它总是取第一个复选框的值,所以有问题,我如何用 Json 比较所有复选框的值? 此外,如果组数组将具有多个值,则意味着多维数组,那么更多组呢?

提前致谢!

您需要能够知道哪个checkbox与哪个database value

这就是IDcheckbox上的用途。 你把它们都当作"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;
}

尝试这个:

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');
    }
}

首先,将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');
    }
});

最后,这奏效了! 只找到那些来自 DB 的复选框并选中它们。

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

感谢大家的支持!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM