使用php foreach的表中的复选框
我用PHP foreach(在codeigniter中)创建的表有一个非常简单的问题 表中的一列有2个复选框。一个使用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
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"))