当我提交带有未明确定义的选中复选框的 HTML 表单时value
,Chrome 将on
作为该字段的值发送。
这是标准行为吗?或者我可以从其他浏览器中得到什么?
当我提交带有未明确定义的选中复选框的 HTML 表单时value
,Chrome 将on
作为该字段的值发送。
这是标准行为吗?或者我可以从其他浏览器中得到什么?
HTML 生活标准on
反映了这一点:该值处于“默认/开启”模式,这意味着如果没有提供 value 属性,它的值为“ ”。从4.10.7.1.16 复选框状态(类型=复选框)-HTML 生活标准(2013 年 9 月):
- 值 IDL 属性处于模式default/on。
[...]
default/on
获取时,如果元素具有value
属性,则必须返回该属性的值;否则,它必须返回字符串“on
”。在设置时,它必须将元素的value
属性设置为新值。
这同样也是另一个 HTML 规范的一部分,W3C HTML 5 Aug 2013 Recommendation Specification也有这个:
供参考我之前的评论:
Firefox(2013 年 9 月)、Chrome(2013 年 9 月)、Internet Explorer(6):“开启”。我怀疑这可以追溯到很久以前。http://lxr.mozilla.org/classic/source/lib/layout/layform.c#86 - 因为大多数浏览器需要为自己的代码对象设置一些默认值,我猜这个“on”很常见。
浏览器只有在选中时,才会发送复选框(在后数据中)的值。您只需要检查 POST 数据中是否存在特定复选框的值(任何值)。
IE
// no need to check against 'on', 'true', '1' etc..
if(post data contains a value for checkbox1) {
// checkbox 1 is checked
}
else {
// not checked
}