我有一个包含大约80个复选框的表单,默认情况下会检查所有这些复选框。用户只会取消选中不需要的项目,因此我在POST
中查找未选中的复选框元素。但是,POST
仅包含已检查值的值。
在搜索了一下之后,我找到了适用于我的情况的解决方法:this question
解决方法:
<form>
<input type='hidden' value='0' name='selfdestruct'>
<input type='checkbox' value='1' name='selfdestruct'>
</form>
使用此功能,我可以获取隐藏字段的值,从而实现了我的目的。
但重要的问题是为什么这不是默认功能?我找到了第一次听起来很奇怪的任何技术问题的正当理由。但为此(不能发布未经检查的复选框)我仍然很想知道原因。
如果有人能说清楚这个话题,我将不胜感激。
答案 0 :(得分:5)
W3C explains仅控制成功&#34;提交。
成功的控制是有效的&#34;提交。
- 全部&#34; on&#34;复选框可能会成功。
同样,对于单选按钮,只有&#34; on&#34;单选按钮是&#34;成功&#34;,对于菜单,只有选定的选项是&#34;成功&#34;。
答案 1 :(得分:1)
未检查的复选框不会在POST数据中发送。你应该检查它是否为空:
if (empty($_POST['field1']))
....
else
....
您还忘记在字段中添加正确的name
和id
。添加它可以更容易地进行检查。
<input type='hidden' value='0' name='field1' id="field1" >