2016-04-08 43 views
0

我正在使用Bootstrap中的表格,其中一列是复选框。该表充满了来自mysql数据库的值。在数据库中,复选框的列值为1或0.如果值为1,我希望检查复选框。我有这个代码,但它只适用于第一个复选框。我怎样才能使用它的所有复选框?这是我的代码。设置基于数组值的jquery复选框

   <tbody> 
<?php while($row = $sql->fetch()) { ?> 
    <tr> 
    <td><?php echo $row['Opleiding_ID']; ?></td> 
    <td><?php echo $row['Opleiding']; ?></td> 
    <?php $checked = $row['Hidden']; ?> 

    <script type="text/JavaScript"> 
$(document).ready(function(){ 


        var arr<?php echo $row["Opleiding_ID"]; ?> = <?php echo json_encode($checked); ?>; 

       if (arr<?php echo $row["Opleiding_ID"]; ?> == "1") { 

    $("#mycheckbox<?php echo $row["Opleiding_ID"]; ?>").prop('checked', true); 
        } else { 
        $("#mycheckbox<?php echo $row["Opleiding_ID"]; ?>").prop('checked', false); 
        } 
        }); 



</script>   
    <td><input type="checkbox" id="mycheckbox<?php echo $row["Opleiding_ID"]; ?>" name="checks" value="" class="check"></td> 
    </tr> 
    <?php } ?> 
</tbody> 
+0

你的标记是什么样的?您目前正在为'mycheckbox'使用基于ID的选择器,通常ID字段应该是唯一的。如果我们看到你的标记是什么样子的话,它可能会使这个更容易一些。 –

+0

您在if语句中指定运算符'=',它应该是比较运算符'==' – DinoMyte

+0

复选框来自db。因此,每个新记录在表格中都有一个新的复选框。所以只有一个ID。我将更新我的代码,以便您可以看到所有内容。 – RoyBerner

回答

1
$(document).ready(function() { 
     var arr = <?php echo json_encode($checked); ?>; 
     $.each(arr, function(index) { 
      if (arr[index] == "1") { 
       $("#mycheckbox").prop('checked', true); 
      } 
     }); 
    }); 

未经测试&可能马车。但这是你应该采取的正确方法。在循环中运行元素。

+0

注意@Rion威廉姆斯评论。他是对的,如果你有这个标记,把你的Id改为 –

+0

$(这个)会给你的对象,而不是一个值。你可能需要arr [index] ==“1”。另外,不需要使用$(arr) – DinoMyte

+0

将arr转换成jquery对象。你是对的@DinoMyte!没想到这一点。感谢您的更正! –

0

如果您动态生成表格,则可以在此处设置复选框值。
JS:

$(document).ready(function(){ 
// your arr from php 
    var arr = [{'value' : 0 , 'name' :'Itme1' , 'description':'description1'}, 
      {'value' : 1 , 'name' :'Itme2' , 'description':'description2'}, 
      {'value' : 0 , 'name' :'Itme3' , 'description':'description3'}, 
      {'value' : 1 , 'name' :'Itme4' , 'description':'description4'}]; 

    var tableContent = ''; 
     $.map(arr, function (item) { 
     checked= (item.value) ? "checked" : "" ; 
     tableContent+='<tr><td><input type="checkbox"'+checked+ '></td><td>' + item.name + '</td><td>' + item.description + '</td><td><input type="button" value="Edit" ></td></tr>'; 
     }); 
    $("#myTbody").html(tableContent); 
}); 

例子:http://jsfiddle.net/tg5op333/39/

0

如果你有一个自动递增的ID,你可以重复它像这样

<script type="text/JavaScript"> 
    $(document).ready(function(){ 

        var arr<?php echo $row["id"]; ?> = <?php echo json_encode($checked); ?>; 
         $.each(arr<?php echo $row["id"]; ?>, function(index) { 
        if (arr<?php echo $row["id"]; ?>[index] == "1") { 

    $(".check<?php echo $row["id"]; ?>").prop('checked', true); 
        } 
          }); 
      }); 
</script> 


    <td><input type="checkbox" id="mycheckbox" name="checks" value="" class="check<?php echo $row["id"]; ?>"></td> 
    </tr> 
    <?php } ?> 
</tbody> 

的JavaScript代码里面,如果你再要遵循代码你应该这样做一个变量$ id = $ row [“id”];输入较少

+0

我不能这样工作。我如何使我的ID自动增量?现在我的ID只是“mycheckbox”。添加的数字使其成为其他ID。还是我错了? – RoyBerner

+0

while循环它的内容如果你有3个表格,class = check <?php $ row [“id”]; ?>在你的数据库中有3个ID与数字1和2和3 将有3个形式与check1 check2 check3如何使id自动增量这里是一个来自w3schools教程http:// www。 w3schools.com/sql/sql_autoincrement.asp –

+0

更新了我原来的帖子。得到它与您的建议艾哈迈德工作。我用id代替了自动增量字段的类。 – RoyBerner