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循环中重用吗?