HTML:复选框默认值

时间:2012-10-16 09:43:47

标签: html cross-browser

当我提交带有选中复选框但没有明确定义value的HTML表单时,Chrome会将on作为该字段的值发送。

这是标准行为吗?或者我对其他浏览器有什么期望?

3 个答案:

答案 0 :(得分:25)

HTML 4.01规范未指定已选中复选框的值。它只是说它是“开启”,但这只是散文,并没有说明默认值是什么。但它也说(在description of the input element下)在这种情况下需要value属性。

所以<input type=checkbox name=foo>在使用的值方面有未定义的行为,但实际上浏览器使用value=on作为默认值。

答案 1 :(得分:9)

HTML Living Standard 反映了这一点:该值处于“默认/开启”模式,这意味着如果未提供值属性,则其值为“on”。来自4.10.7.1.16 Checkbox state (type=checkbox) - HTML Living Standard (Sep 2013)

        

[...]

     

默认/上
  获取时,如果元素具有value属性,则必须返回该属性的值;否则,它必须返回字符串“on”。在设置时,必须将元素的value属性设置为新值。

这也是另一个HTML规范的一部分, W3C HTML 2013年8月5日建议规范 也有这个:


供我参考之前的评论:

  

Firefox(2013年9月),Chrome(2013年9月),Internet Explorer(6):“on”。我怀疑这可以追溯到很久。 http://lxr.mozilla.org/classic/source/lib/layout/layform.c#86 - 由于大多数浏览器需要为自己的代码对象设置一些默认值,我猜这个“开启”只是常见的。

答案 2 :(得分:2)

浏览器仅在选中时才会发送复选框的值(在POST数据中)。检查POST数据中是否存在特定复选框的值(任何值),这就是您所需要的。

// no need to check against 'on', 'true', '1' etc..
if(post data contains a value for checkbox1) {
    // checkbox 1 is checked
}
else {
    // not checked
}