JQuery检查/取消选中表php数组中的所有复选框

时间:2015-04-27 05:00:44

标签: php jquery arrays checkbox

我使用php在数组表mysql上显示数据,并使用jquery函数选中/取消选中所有复选框。 但问题是我使用jQuery函数来检测并执行基于复选框的类的功能。 我使用了一个复选框数组,因此chackbox和类的名称可以根据mysql中的数据增加。

Jquery代码:

<SCRIPT language="javascript">
$(document).ready(function() {
    $('#selectall').click(function(event) {  //on click
        if(this.checked) { // check select status
            $('.PILIH').each(function() { //loop through each checkbox
                this.checked = true;  //select all checkboxes with class "checkbox1"              
            });
        }else{
            $('.PILIH').each(function() { //loop through each checkbox
                this.checked = false; //deselect all checkboxes with class "checkbox1"                      
            });        
        }
    });


});

</SCRIPT>

PHP代码:
 

<a href="add-komitmen.php" style="text-decoration:none;"><input type="button" value="+Add Komitmen"/></a> <input type="submit" value="Hapus" name="HAPUS" />
<!--<input type="checkbox" id="selectall"/>-->
<br>
<div class="scroll">

<?php 
$sql2 = "Select  master_outlet.ID_OUTLET, master_outlet.NAMA_OUTLET, tb_komitmen.ID_OUTLET
from master_outlet, tb_komitmen
where master_outlet.ID_OUTLET = tb_komitmen.ID_OUTLET group by master_outlet.ID_OUTLET";

$hasil2 = mysqli_query($mysqli, $sql2);

while($data2 = mysqli_fetch_array($hasil2)) {
$yoo = $data2[ID_OUTLET];
$outlet = $data2[NAMA_OUTLET];

//echo $yoo;

echo "<table  border='1' cellspacing='0' width='100%'>
    <thead>
        <tr><th width='9%'>Check <input type='checkbox' id='selectall'/></th>
            <th width='5%'>No.</th>

            <th>$outlet</th>
            <th width='17%'>Komitmen</th>
           <!-- <th>Date</th>-->
            <th width='10%'>Detail</th>

        </tr>
    </thead>
    <tbody>";

$sql = "Select AA.* from(SELECT tb_komitmen.ID_KOMITMEN AS ID, 
               master_outlet.NAMA_OUTLET AS NAMA_OUTLET, 
               master_produk.NAMA_PRODUK AS NAMA_PRODUK
          ,tb_komitmen.KOMITMEN AS KOMITMEN, master_outlet.ID_OUTLET AS ID_OUTLET

               FROM tb_komitmen, master_outlet, master_produk
               WHERE master_outlet.ID_OUTLET = tb_komitmen.ID_OUTLET
               AND   master_produk.ID_PRODUK = tb_komitmen.ID_PRODUK) as AA where ID_OUTLET = '$yoo'";

$hasil = mysqli_query($mysqli, $sql);
$num_results = mysqli_num_rows($shasil);
if($hasil)
    {
        if(mysqli_num_rows($hasil)!=0) {

$no = 1; 
while($data = mysqli_fetch_array($hasil)) {
//$min = $data[KOMITMEN];

 echo "<tr>";
  echo "<td align='center'><input type='checkbox' value='$data[ID]' name='PILIH[]' class='PILIH' ></td>";
   echo "<td align='center'>$no</td>";
   //echo "<td align='center'>$data[NAMA_OUTLET]</td>";
   echo "<td align='center'>$data[NAMA_PRODUK]</td>";
   echo "<td align='center'>$data[KOMITMEN]</td>";
   //echo "<td align='center'>$data[TGL]</td>";
   echo "<td align='center'><a href='detail-stc-otl-produk.php?ID=$data[ID]' style='text-decoration:none;'><input type='button' value='detail'></a></td>";   
 echo "</tr> ";
  $no++; 
}
}
 echo "<br> ";
}
}

echo " </tbody>      
</table>" ;
?>

</div>

</form>

上述代码的概述。 如果我点击检查全部,则所有复选框将全部检查。 我希望如果我点击检查第一个表中的所有复选框都是检查。 如果我点击2,则仅检查表2中的所有仅支票复选框。

an overview of the above code. if i click check All then all the checkboxes will check all. I wish if I click check all the checkboxes in the first table are checks. and if I click 2 then check all the checks only checkbox in table 2 only.

3 个答案:

答案 0 :(得分:0)

试试这个:

$(document).ready(function() {
    $('#selectall').click(function(event) {  //on click
        if(this.checked) { // check select status
            $(this).parent("table").find("input[type=checkbox]").attr("checked",true); 
        }else{
           $(this).parent("table").find("input[type=checkbox]").attr("checked",false); 

        }
    });


});

答案 1 :(得分:0)

更改此代码:

<input type='checkbox' id='selectall'/>

进入(不需要增量ID)

<input type='checkbox' class='selectall'/>

<强> JS

$(document).ready(function() { 
   $(document).on('click','.selectall', function(event) {  // better use event delegation if you add the data dynamically

    if(this.checked) { 
        $(this).parent('table').find('.PILIH').prop('checked', true);            
    }else{
        $(this).parent('table').find('.PILIH').prop('checked', false);       
    }
   });

});

答案 2 :(得分:0)

$('#allCheck').click(function(event) {
          if (this.checked) {
              $('.chk').each(function() {
                  this.checked=true;
              });
          } else {
              $('.chk').each(function(){
                  this.checked=false;
              });
          }
      });

将id checkall放在要从中检查所有复选框的复选框上。要在哪个复选框上单击“应用chk类”。并在javascript标签中写上面的代码。有时jQuery标签不起作用。然后你需要使用document.ready函数/你可以在body的末尾编写js代码。这样你的页面加载速度就会很快。