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)
注意:如果您的名称是数组形式(即它们中有方括号),这将不起作用,因为隐藏字段也会增加数组计数.
| 归档时间: |
|
| 查看次数: |
44468 次 |
| 最近记录: |