2016-04-08 47 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