从函数中的数组中选择所有复选框

时间:2014-10-24 22:26:00

标签: javascript php jquery html checkbox

我试图从我的表中选中所有复选框(选中所有/取消选中所有功能),但似乎无法正确使用,因为我见过的所有解决方案都使用表单和单独的输入复选框,但我的代码是从函数内调用,以回显我的数据库表中存储的结果。我需要用户能够检查第一个复选框(当前什么也不做),从而导致选中所有其他复选框。请有人协助我如何使用它,这是我尝试使用php和jquery实现的代码:

function BuildPersonResultTable($result){
        $personTable= "<table id='main-db' border='1'>";
        $personTable= $personTable . "<tr>";
        $personTable= $personTable . "<th><input type='checkbox' class='chk_boxes' /></th>";
        $personTable= $personTable . "<th>ID</th>";
        $personTable= $personTable . "<th>First Name</th>";`
        $personTable= $personTable . "<th>Surname</th>";
        $personTable= $personTable . "<th>E-mail</th>";
        $personTable= $personTable . "<th>Phone Number</th>";
        $personTable= $personTable . "<th>Parent</th>";
        $personTable= $personTable . "<th>Volunteer</th>";
        $personTable= $personTable . "<th>Business Contact</th>";
        $personTable= $personTable . "<th></th>";
        $personTable= $personTable . "<th></th>";

        $personTable= $personTable . "</tr>";
        while($row = mysqli_fetch_array($result))
        {
            $personTable= $personTable . BuildPersonResultRow($row);

        }

        $personTable= $personTable . "</table>";
        return $personTable;
    }

    function BuildPersonResultRow($row){
            $personTableHtml = "<tr>";
            $personTableHtml = $personTableHtml . "<td width='60px' id='chooseSender'>";
            $personTableHtml = $personTableHtml . "<input type='checkbox' class='chk_boxes1' name='id_list[]' value='" . $row['id'] ."'/>";
            $personTableHtml = $personTableHtml . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . $row['id'] . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . $row['name']  . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . $row['surname'] . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . $row['email'] . "</td>";
            $personTableHtml = $personTableHtml .  "<td width='70'>" . $row['alt_contact'] . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . boolToYesNo($row['parent']) . "</td>";
            $personTableHtml = $personTableHtml .   "<td>" . boolToYesNo($row['volunteer']) . "</td>";
            $personTableHtml = $personTableHtml .  "<td>" . boolToYesNo($row['business']) . "</td>";
            $personTableHtml = $personTableHtml . '<td><a class= "side-btns" href="edit.php?id=' . $row['id'] . '">Edit</a></td>';
            $personTableHtml = $personTableHtml . '<td><a class= "side-btns" href="delete.php?id=' . $row['id'] . '">Remove</a></td>';
            $personTableHtml = $personTableHtml .  "</tr>";

            return $personTableHtml;
        };

And the HTML code:

<html>
<head>
    <link rel="stylesheet" type="text/css" href="CSS/DbCSS.css">
 <script type="text/javascript" src="jquery-1.6.4.min.js">
 $('.chk_boxes').click(function(){
    var chk = $(this).attr('checked')?true:false;
    $('.chk_boxes1').attr('checked',chk);
});
 </script>
</head>

2 个答案:

答案 0 :(得分:1)

您需要等待DOM完成加载,以便您的JS代码知道复选框。

像这样的东西(把它放在头部或身体里,并不重要):

<script type="text/javascript">
    $(document).ready(function(){
        $('.chk_boxes').click(function(){
            $('.chk_boxes1').attr('checked',$(this).is(':checked'));
        }
    });
</script>

答案 1 :(得分:0)

对于那些将来可能需要帮助的人,我最终使用了这段代码,现在它完美无缺:

<head>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script>
$(document).ready(function(){
  $('.chk_boxes').click(function(){
    $('.chk_boxes1').prop('checked', this.checked);
  });
});
</script>
</head>