我目前有一个带有循环的表单,该表单构建了多个复选框,可以在其中成功触发事件。
我已设置好代码,以便如果数据库中该行的值是1,请预先选中该复选框,该复选框将起作用。
我正在尝试创建它,以便在选中该框时,Javascript发送一个“ 1”,但是如果未选中,则发送一个“ 0”。
如果该页面加载的数据库值为1,并且选中了该框,那么当用户取消选中该页面时,我希望它向控制台日志发送“ 0”,反之亦然
<form id="saveLineup">
@foreach($list as $lists)
<tr style="text-align:center;">
<td><input class="addToLineup" type="checkbox" <?php if ($lists['LINE_UP'] == 1) echo "checked='checked'"; ?></td>
</tr>
@endforeach
</form>
当前,无论如何,无论我选中还是取消选中,复选框都会触发值“ on”显示在console.log上。
我在做什么错了?
$(".addToLineup").click(function (e) {
updatedata.lineup = $(".addToLineup").val();
console.log(updatedata);
});
答案 0 :(得分:1)
<form id="saveLineup">
@foreach($list as $lists)
<tr style="text-align:center;">
<td>
<input class="addToLineup" type="checkbox"/>
</td>
</tr>
@endforeach
</form>
编辑:澄清之后,您只需要单击复选框即可检查其状态,然后根据该状态发送1或0:
$(".addToLineup").click(function(e) {
if ($(this).is(":checked")) {
updatedata.lineup = 1;
} else {
updatedata.lineup = 0;
}
console.log(updatedata);
});
JSFiddle供参考:https://jsfiddle.net/1agLdu5e/1
答案 1 :(得分:1)
您应该将复选框的值设置为标识特定阵容的内容。然后,使用数组样式的名称作为输入。结果将是$_POST['addToLineup']
将是所有标识符的数组。
<form id="saveLineup">
@foreach($list as $lists)
<tr style="text-align:center;">
<td><input class="addToLineup" name="addToLineup[]" type="checkbox" value="<?php echo $lists['ID']; ?>" <?php if ($lists['LINE_UP'] == 1) echo "checked='checked'"; ?></td>
</tr>
@endforeach
</form>
用包含阵容ID的表列的实际名称替换'ID'
。