未选中复选框返回空值

use*_*790 8 html php mysql jquery cordova

我有一组复选框,当它们被选中时,它们将值传递为1,否则它们将值传递为0.但是,不是将未选中复选框的值发送为"0",而是发送的值为"NULL".

我有以下JS代码,应该相应地将值设置为0/1,但仍然将值发送为NULL.有没有什么可以做的,以确保在未选中复选框的情况下传递的值为0?

$('#cb1, #cb2, #cb3, #cb4').on('click', function ()
    $(this).val(this.checked ? 1 : 0);
});
Run Code Online (Sandbox Code Playgroud)

更新 这是我的HTML:

<input type="checkbox" name="cb1" id="cb1" value="1" checked />
<input type="checkbox" name="cb2" id="cb2" value="1" checked />
<input type="checkbox" name="cb3" id="cb3" value="1" checked />
<input type="checkbox" name="cb4" id="cb4" value="1" checked />
Run Code Online (Sandbox Code Playgroud)

默认情况下都会检查它们.

如果未选中其中一个,MySQL将报告以下错误:0SQLSTATE [23000]:完整性约束违规:1048列"ColumnName"不能为空.

这是因为列设置为不为Null.即使我将默认值设置为0,一旦我点击提交按钮,我仍然会收到错误.我试图删除Not NULL属性,而不是将值预填充为0,数据库中的输入为NULL.

Myl*_*tos 59

如果未选中复选框,则不会发送它,因此如果未选中它,则将其值设置为0将不会有帮助 - 它将始终返回NULL.

有两种方法可以轻松解决此问题:

1)假设PHP params中的NULL表示未选中该复选框.如果页面上并不总是存在该复选框,则可能会出现问题.通过它的声音,有可变数量的复选框,所以这可能不起作用.

2)在复选框之前添加一个隐藏的输入,该输入与复选框的名称相同,值为0 .如果未选中该复选框,则将使用隐藏字段值,如果选中,则将使用复选框值.

<input type="hidden" name="checkbox_1" value="0">
<input type="checkbox" name="checkbox_1" value="1">
Run Code Online (Sandbox Code Playgroud)

注意:如果您的名称是数组形式(即它们中有方括号),这将不起作用,因为隐藏字段也会增加数组计数.