HTML:复选框默认值

Fra*_*anz 24 html cross-browser

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

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

Juk*_*ela 26

HTML 4.01规范未指定已选中复选框的值.它只是说它是"开启",但这只是散文,并没有说明默认值是什么.但它也说(在元素描述下input)value在这种情况下需要该属性.

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

  • 根据HTML 5,如果浏览器通过DOM/IDL访问该值(或者如果浏览器创建DOM并允许访问该值,例如对javascript),则行为不是未定义的,而是定义的.那么值是"`on`".这个细节在过去的HMTL DOM中未指定,因为IDL没有详细说明这种情况.在实践中,你在技术上写这个总是如此,但仍未定义.http://stackoverflow.com/a/19094549/367456 - 过去通常需要编写该属性的HTML(例如HTML 2.0),因为HTML 5不再需要这样做. (5认同)

hak*_*kre 9

HTML Living Standard反映了这一点:值处于"默认/打开"模式,这意味着on如果没有提供值属性,则值为" ".从4.10.7.1.16复选框状态(类型=复选框) - HTML Living Standard(2013年9月):

[...]

default/on
On获取,如果元素具有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 - 因为大多数浏览器需要为自己的代码对象设置一些默认值,我猜这个"on"只是常见的.