【问题标题】:Counting Number Of Selected Checkbox & Checking all计算所选复选框的数量并检查所有
【发布时间】:2019-10-06 03:32:29
【问题描述】:

我从我的数据库中获取值。如您所知,有时您想检查多行以删除或更新。您想知道您选择了多少。

我需要的是:

-- 选中复选框的数量 -- 使用一个复选框检查所有复选框

这是我如何在没有任何功能的情况下循环多个复选框:

if(isset($_POST['Submit']))
{
  echo '<table id="registrations_table_results" border=1  align=center >
  <thead style="font-weight:bold;">
    <tr>
        <td><input type="checkbox" name="checkall"></td>
        <td>#</td>
        <td>Name Surname</td>
        <td>Unique ID</td>
    </tr>
  </thead>';    

    $adsoyad = $_POST['adsoyad'];
    $query = mysqli_query($connect,"select * from kullanicilar where adsoyad like '%$adsoyad%'");


    while ($read = mysqli_fetch_array($query))
    {       
        $id = $read['ID'];
        $adsoyad = $read['adsoyad'];
        $tc = $read['tc'];

        echo '
            <tr>
                <td><input type="checkbox" name="check"></td>
                <td>'.$id.'</td>
                <td>'.$adsoyad.'</td>
                <td>'.$tc.'</td>
            </tr>
            ';
    }
  }

如下所示:

此时如您所见,单击搜索按钮时,每个结果附近都有一个复选框。在表头有 1 个以检查所有。我在那里尝试了多个功能,但它们似乎不起作用。我决定复制-把我的工作贴到这里,这里最好适合我需要的功能。

编辑:这些复选框不是手动创建的。但它的作用与行数一样多。

【问题讨论】:

  • 你能帮我把它包含在我的工作中吗?
  • 考虑使用 JavaScript,它会更适合这种功能。

标签: php html checkbox


【解决方案1】:

添加了一个全选示例代码,并检查 jQuery 中复选框更改的计数 请参见下面的代码:它还获取未选中复选框的输出。

$(document).ready(function(){
        //Checkbox check event
        $("input[type='checkbox']").on("change", function(){
               //update count every check change event
               //total of all check[] checked
               var checkedcount = $("input[name='check[]']:checked").length;
           console.log("Total checked items" + checkedcount);
          //Check values of all check[]
          setTimeout(function(){
          var checkboxes = $("input[name='check[]']");
          $.each(checkboxes , function(index, element){
                //check if the current checkbox is checked
                var ischecked = $(checkboxes[index]).is(":checked") ? true : false;
                 //sample output
                 console.log(index + " value=" + element.value + " / ischecked? =" + ischecked);
             });
          });

        });
  
        $("input[name='checkall']").on("change", function(){
            if ( $("input[name='checkall']:checked" ) ) {
             $("input[name='check[]']").not(this).prop('checked', this.checked);
            }
        }).trigger("onchange");
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
   <td><input type="checkbox" name="checkall"> Check all</td>
</tr>
 <tr>
   <td><input type="checkbox" name="check[]" value="number one">1</td>
</tr>
 <tr>
   <td><input type="checkbox" name="check[]" value="number two">2</td>
</tr>
 <tr>
   <td><input type="checkbox" name="check[]" value="number three">3</td>
</tr>
 <tr>
   <td><input type="checkbox" name="check[]" value="number four">4</td>
</tr>
 <tr>
   <td><input type="checkbox" name="check[]" value="number five">5</td>
</tr>
  </table>

首先,您需要将复选框重命名为如下所示:

<td><input type="checkbox" name="check[]"></td>

提交你可以这样做:

$checkboxes = $_POST['check'];
$cbCount = count($checkboxes);

在 php 中检查每个复选框的值

foreach($checkboxes as $checkbox) {
   // some code here

}

在检查更改时计算 jQuery 中的检查项

$(document).ready(function(){
    $("input[name='check[]']").on("change", function(){
           //update count every check change event
           var count = $("input[name='check[]']:checked").length;
    });
});

【讨论】:

  • 它不知道“检查”来自“未定义变量”检查”。我猜你错过了重点。那些复选框不是手动创建的。它的回声和行一样多结果。另外,它应该像“CheckedChange”事件一样工作。
  • 我发布了代码,以便您可以使用 php 计算它,您应该澄清您的问题并指出您需要使用 php 上不可用的 checkedchange 事件来实现检查。我为您提供的代码将计算出所有复选框,即使是动态创建的,也不管它有多少,因为提交时它将在数组中。
  • 我更新了答案并添加了如何检查更改并捕获选中或取消选中的复选框值。查看更新的答案
  • 问题是,当我试图从一个单独的文件中加载那些 jS 函数时,它没有工作。但是当我把整个代码放在页面顶部之间 标签,它奏效了。我非常感谢你的努力,并感谢你的精彩分享。它会在我想要检查所有内容时进行检查。但只有一件事要做,我无法获得选中复选框的数量.
猜你喜欢
  • 1970-01-01
  • 2020-03-29
  • 2013-02-02
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多