У меня довольно простая проблема с таблицей, которую я создаю с помощью PHP foreach (в кодеигнитре).Флажки внутри таблицы с php foreach
В одной колонке внутри таблицы есть 2 флажка. Один true
и один false
, поэтому, когда я создаю таблицу, есть некоторые имена и информация, а затем 2 флажка. Всякий раз, когда пользователь нажимает кнопку 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>
И коды Аякса
$(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) {
}
});
}
});
});
Проблема здесь состоит в том, что, когда я проверить 2-ую строку флажка стола позволяет говорить false
, есть изменения на 1-я строка для true
, если она проверена.
Хотя я уже говорил
if($(this).is(":checked"))
Любая идея?
Считаете ли вы использование переключателей? – ymas
@ymas nop Я просто задавался вопросом, почему он не снимает флажок с его собственной строки, и он также меняет все остальные строки. Я знаю его из-за 'class', но что мне делать, чтобы он работал с моим существующим кодом? И я думаю, что у меня будет такая же проблема, как и код выше. –
Он изменяет другие строки, поскольку имя класса используется для проверки и снятия флажков, а класс не является уникальным идентификатором. Вместо использования имени класса используйте идентификаторы. –