使用fetch数组检查复选框

时间:2014-06-04 11:37:01

标签: javascript php jquery checkbox

这是我在网站上的代码,它检索每个赛季,然后获得主场胜利数,胜率和赢得lsp,这很好,并且每个赛季在表格中创建一个新线。

然后我有两列过滤掉数据(Min& Max),它们是单选按钮,这些工作正常,我提交后保持检查并且值正常工作。

我遇到问题的是' Checkbox'在提交表单后我需要继续检查,它只会在我提交后检查其中一个复选框。

    <form action='' method='post'>
        <?php
    echo "<table id='stats' width='100%' border='1' cellspacing='1' cellpadding='1'>
        while($row = mysql_fetch_array($resultsseason, MYSQL_ASSOC)) {
          echo "<tr bgcolor='#FFFFCC'>";
          echo "<td align='center'><input type='radio' class ='radio-button' name='seasonmin' value='".$row['season']."'" . ((@$_POST['seasonmin'] == $row['season'])?'checked="checked"':"") . "/></td>";
          echo "<td align='center'><input type='radio' class ='radio-button' name='seasonmax' value='".$row['season']."'" . ((@$_POST['seasonmax'] == $row['season'])?'checked="checked"':"") . "/></td>";
          **echo "<td align='center'><input type='checkbox' name='seasonexc' value='".$row['season']."'/></td>";**
          echo "<td align='center'>" . $row['season'] . "</td>";
          echo "<td align='center'>" . $row['countp'] . "</td>";
          echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['counth'] . "</font>$profitwb2</td>";
          echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['WinPer'] . "%</font>$profitwb2</td>";
          echo "<td align='center'>$profitwb1<font color='$profitw'>" . $row['WinLSP'] . "</font>$profitwb2</td>";
          echo "</tr>";
          }

        echo "</table>";
        ?>
<hr><br>
<input type="submit" value="Update" >
<script type="text/javascript">
        var allRadios = document.getElementsByName('seasonmin');
        var booRadio;
        var x = 0;
        for(x = 0; x < allRadios.length; x++){

            allRadios[x].onclick = function() {
                if(booRadio == this){
                    this.checked = false;
                    booRadio = null;
                }else{
                    booRadio = this;
                }
            };
        }
    </script>
    <script type="text/javascript">
        var allRadios = document.getElementsByName('seasonmax');
        var booRadio;
        var x = 0;
        for(x = 0; x < allRadios.length; x++){

            allRadios[x].onclick = function() {
                if(booRadio == this){
                    this.checked = false;
                    booRadio = null;
                }else{
                    booRadio = this;
                }
            };
        }
    </script>

我搜索并阅读了大量关于保持检查的帖子,但我似乎无法弄明白!我需要帮助的路线是..

echo "<td align='center'><input type='checkbox' name='seasonexc' value='".$row['season']."'/></td>";

以及如何保持所有已检查的,在我点击提交后检查!

提前谢谢你!

2 个答案:

答案 0 :(得分:0)

复选框与单选按钮的不同之处在于它们未被分组。而使用单选按钮,您只能选中其中一个共享name属性的复选框,而复选框必须使用不同的名称。

在您的情况下,您打印了一堆具有相同name的复选框,这导致其中只有一个被提交。一个好的约定是使用数组类型name,在您的情况下将是seasonexc[]。如果您要跟踪索引,请将其更改为seasonexc[".$index."]

此外,我注意到,在您的问题行中,checked属性完全丢失,因此无法检查其中任何一个。

答案 1 :(得分:0)

我发现这很简单......

if (isset($_POST['seasonexc']) && is_array($_POST['seasonexc']) && in_array($row['season'], $_POST['seasonexc'])) { $checked = "checked='checked'"; } else { $checked = ""; }

然后调用$ checked解决了这个问题!总是尝试过度思考它!