Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php foreach的表中的复选框_Php_Jquery_Codeigniter_Checkbox - Fatal编程技术网

使用php foreach的表中的复选框

使用php foreach的表中的复选框,php,jquery,codeigniter,checkbox,Php,Jquery,Codeigniter,Checkbox,我用PHP foreach(在codeigniter中)创建的表有一个非常简单的问题 表中的一列有2个复选框。一个true和一个false因此,当我创建表时,有一些名称和信息,然后有两个复选框。每当用户单击true时,我就会创建一个对数据库的AJAX POST调用来更改列的状态。但是当用户单击true然后单击false时,我希望取消选中true复选框 这是密码 <table class="responstable"> <tr> <th>ID

我用PHP foreach(在codeigniter中)创建的表有一个非常简单的问题

表中的一列有2个复选框。一个
true
和一个
false
因此,当我创建表时,有一些名称和信息,然后有两个复选框。每当用户单击
true
时,我就会创建一个对数据库的AJAX POST调用来更改列的状态。但是当用户单击
true
然后单击
false
时,我希望取消选中
true
复选框

这是密码

<table class="responstable">  
  <tr>  
    <th>ID</th>
    <th><span>Name</span></th>
    <th>number1</th>
    <th>number2</th>
  </tr>

  <?php
  foreach($students as $column => $data ) { ?>
  <tr>    
    <td><?php echo $data[0]->Userproperties_UserAM; ?></td>
    <td><?php echo $data[0]->Userproperties_UserFullName; ?></td>
    <td><?php echo $data[0]->UserAbsence; ?></td>
    <td> <input class="true" id="<?php echo $data[0]->Userproperties_UserId; ?>" type='checkbox' value="<?php echo $data[0]->Userproperties_UserAM; ?>" />
  <label for='true'>
    <span></span>
    True    
  </label>  
  <input class="false" id="<?php echo $data[0]->Userproperties_UserId; ?>" type='checkbox' value="<?php echo $data[0]->Userproperties_UserAM; ?>" />
  <label for='false'>
    <span></span>
    False  
  </label></td>
  </tr>
<?php   } ?>
</table>

有什么想法吗?

在您的情况下,.false和.true将取消选中所有选项。您只需要检查最近的元素

请替换代码$('.true').attr('checked',false);使用此代码$(this.closest(“td”).find('.true').attr('checked',false))


并对for$('.false').attr('checked',false)执行相同的操作;此$(this).closest(“td”).find('.false').attr('checked',false)

在您的情况下,.false和.true将取消选中所有。您只需要检查最近的元素

请替换代码$('.true').attr('checked',false);使用此代码$(this.closest(“td”).find('.true').attr('checked',false))


并对for$('.false').attr('checked',false)执行相同的操作;此$(this).closest(“td”).find('.false').attr('checked',false)

你考虑过使用单选按钮吗?@ymas-nop我只是想知道为什么它不取消选中它自己行的复选框,它也会更改所有其他行。我知道这是因为
,但是我应该如何使它与我现有的代码一起工作呢?我想我会遇到与上面代码相同的问题。它会更改其他行,因为类名用于选中和取消选中复选框,并且类不是唯一标识符。不要使用类名,而是使用ID。正如您所提到的,您的问题是选择器过于通用。请阅读此处有关“上下文”的部分:看看您是否能够找出如何限制选择器。如果你想不出来,让我知道,我会给你举个例子,但你应该能想出来:)问题是你的$('.false').attr('checked',false');和$('true').attr('checked',false);他们正在取消选中包含clase的所有复选框。你考虑过使用单选按钮吗?@ymas nop我只是想知道为什么它不取消选中自己行的复选框,而它也会更改所有其他行。我知道这是因为
,但是我应该如何使它与我现有的代码一起工作呢?我想我会遇到与上面代码相同的问题。它会更改其他行,因为类名用于选中和取消选中复选框,并且类不是唯一标识符。不要使用类名,而是使用ID。正如您所提到的,您的问题是选择器过于通用。请阅读此处有关“上下文”的部分:看看您是否能够找出如何限制选择器。如果你想不出来,让我知道,我会给你举个例子,但你应该能想出来:)问题是你的$('.false').attr('checked',false');和$('true').attr('checked',false);他们正在取消选中包含clase的所有复选框。
$(document).ready(function() {
    $('.true').change(function() {
       if($(this).is(":checked")) {
           $('.false').attr('checked', false);
                  var moduleid = <?php echo $moduleid; ?>;
                  var teacherid = <?php echo $teacherid; ?>;
                    var studentid = $(this).attr('id');
                    var weeknum = $("#dropi").val();
                    jQuery.ajax({
                        type: "POST",
                        url: "<?php echo base_url(); ?>" + "index.php/TeacherParousies/send_parousia",
                        data: {
                            moduleid: moduleid,
                            studentid: studentid,
                            teacherid: teacherid,
                            parousia: 1,
                            weeknum: weeknum
                        },
                        success: function(res) {
                        },
                        error: function(err) {
                        }
                    });
                } 
           });
           $('.false').change(function() {
               if($(this).is(":checked")) {
                $('.true').attr('checked', false);
                  var moduleid = <?php echo $moduleid; ?>;
                  var teacherid = <?php echo $teacherid; ?>;
                    var studentid = $(this).attr('id');
                    var weeknum = $("#dropi").val();
                    jQuery.ajax({
                        type: "POST",
                        url: "<?php echo base_url(); ?>" + "index.php/TeacherParousies/send_parousia",
                        data: {
                            moduleid: moduleid,
                            studentid: studentid,
                            teacherid: teacherid,
                            parousia: 0,
                            weeknum: weeknum
                        },
                        success: function(res) {
                        },
                        error: function(err) {
                        }
                    });
               }
    });
});
if($(this).is(":checked"))