2010-12-08 30 views
2

我有一個php數組,我試圖讓jQuery來檢查這些複選框,但我似乎無法得到它的工作。我的php陣列名稱是「toCheck」,它是:使用jquery從php數組中檢查複選框所需的幫助

Array 
(
    [0] => 0 
    [1] => 3 
    [2] => 4 
) 

0,3,4是我需要檢查的複選框。這裏是我的複選框:

<input type="checkbox" name="correct[0]" id="correct" value="0" /> 
<input type="checkbox" name="correct[1]" id="correct" value="1" /> 
<input type="checkbox" name="correct[2]" id="correct" value="2" /> 
<input type="checkbox" name="correct[3]" id="correct" value="3" /> 
<input type="checkbox" name="correct[4]" id="correct" value="4" /> 
<input type="checkbox" name="correct[5]" id="correct" value="5" /> 

如果有人能指出什麼jQuery的使用,使選擇這些複選框,這將是偉大的!

<?php foreach($toCheck as $checkMe) { ?> 
//i'm assuming my jquery goes here but I can't get it working 
<?php }; ?> 

預先感謝您:)

回答

2

你的HTML是無效的。 id值必須是唯一在文檔中(reference)。

這就是說,忽視了id值,你可以使用這個(live example):

$(':checkbox[name^=correct]').each(function() { 
    switch (this.value) { 
     case "0": 
     case "3": 
     case "4": 
      this.checked = true; 
      break; 
    } 
}); 

這對name屬性使用CSS3子選擇器(jQuery的支持幾乎所有的CSS3的)選擇任何複選框一個以correct開頭的名字,然後使用jQuery的each來遍歷它們。然後我們將checked屬性設置爲所需的value

你也可以用一個較長的選擇,沒有循環(live example)做到這一點:

$(':checkbox[name^=correct][value=0], :checkbox[name^=correct][value=3], :checkbox[name^=correct][value=4]').attr('checked', true); 

更新:重讀你的問題,它看起來像你可能需要更加動態地做到這一點:

<script type='text/javascript'> 
(function() { 
    var boxes = $(); // Assumes jQuery 1.4 or higher 
<?php foreach($toCheck as $checkMe) { ?> 
    echo "boxes.add(':checkbox[name=^=correct][value=" . $toCheck . "]');"; 
<?php }; ?> 
    boxes.attr('checked', true); 
})(); 
</script> 

...這將產生:

<script type='text/javascript'> 
(function() { 
    var boxes = $(); // Assumes jQuery 1.4 or higher 
    boxes.add(':checkbox[name=^=correct][value=0]'); 
    boxes.add(':checkbox[name=^=correct][value=3]'); 
    boxes.add(':checkbox[name=^=correct][value=4]'); 
    boxes.attr('checked', true); 
})(); 
</script> 

...這將檢查相關的框。但它不會非常有效(所有文檔遍歷),最好使用PHP將值合併到選擇器或switch,如上所示。

+0

非常感謝,我會修好我的ID並玩上面的:) – SoulieBaby 2010-12-08 23:52:16