为什么我们不能POST未经检查的复选框?

时间:2015-06-06 10:02:12

标签: html post checkbox

我有一个包含大约80个复选框的表单,默认情况下会检查所有这些复选框。用户只会取消选中不需要的项目,因此我在POST中查找未选中的复选框元素。但是,POST仅包含已检查值的值。

在搜索了一下之后,我找到了适用于我的情况的解决方法:this question

解决方法:

<form>
  <input type='hidden' value='0' name='selfdestruct'>
  <input type='checkbox' value='1' name='selfdestruct'>
</form>

使用此功能,我可以获取隐藏字段的值,从而实现了我的目的。

但重要的问题是为什么这不是默认功能?我找到了第一次听起来很奇怪的任何技术问题的正当理由。但为此(不能发布未经检查的复选框)我仍然很想知道原因。

如果有人能说清楚这个话题,我将不胜感激。

2 个答案:

答案 0 :(得分:5)

W3C explains仅控制成功&#34;提交。

  

成功的控制是有效的&#34;提交。

     
      
  • 全部&#34; on&#34;复选框可能会成功。
  •   

同样,对于单选按钮,只有&#34; on&#34;单选按钮是&#34;成功&#34;,对于菜单,只有选定的选项是&#34;成功&#34;。

答案 1 :(得分:1)

未检查的复选框不会在POST数据中发送。你应该检查它是否为空:

if (empty($_POST['field1']))
     ....
else
     ....

您还忘记在字段中添加正确的nameid。添加它可以更容易地进行检查。

<input type='hidden' value='0' name='field1' id="field1" >