为什么我们不能POST未选中的复选框



我有一个大约有80个复选框的表单,默认情况下它们都将被选中。用户只会取消选中不需要的项目,所以我在POST中寻找未选中的复选框元素。但是,POST只保存选中的值。

经过一番搜索,我找到了一个解决我的情况的方法:这个问题

处理:

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

使用这个我可以得到隐藏字段的值,从而实现了我的目的。

但是重要的问题是为什么这不是默认特性?对于任何第一次听起来很奇怪的技术问题,我都能找到合理的理由。但是对于这个(不能发布未选中的复选框),我仍然很想知道原因。

如果有人能就这个话题提供一些启发,我将不胜感激。

W3C解释说,只有"成功"的控件才是"成功"的。提交。

一个成功的控件是"valid"提交。

  • 所有"知道;复选框可能成功。

同样,对于单选按钮,只有"on"单选按钮为"成功",对于菜单,只有选中的选项为"成功"。

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

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

您还忘记在字段中添加正确的nameid。添加这个将使检查更容易。

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

最新更新