使用jquery检查来自php数组的复选框需要帮助

时间:2010-12-08 23:41:28

标签: php jquery arrays checkbox

我有一个php数组,我正在尝试让jQuery检查这些复选框,但我似乎无法让它工作。我的php数组名称是“toCheck”,它是:

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 个答案:

答案 0 :(得分: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,如上所示。

答案 1 :(得分:0)

请注意,浏览器不会提交未选中的复选框。

有关详情,请参阅Submit an HTML form with empty checkboxes