考虑以下标记:
<label>
<input type="hidden" name="likes_bacon" value="no" />
<input type="checkbox" name="likes_bacon" value="yes" />
I like bacon
</label>
W3C HTML 验证器将针对此标记引发错误,因为标签包含多个输入,这在技术上是无效的。
我的问题有两个:为什么验证者应该关心,因为第一个是hidden
?用户代理(包括屏幕阅读器 - 我已经检查过)没有表明隐藏字段存在,并且框架呈现带有相同名称的随附隐藏输入的复选框是很常见/有用的,以便始终通过在未选中复选框的情况下提交表单的情况下,表单提交中的默认值。隐藏的输入也是不可变的,因为它不是真正的用户可编辑的表单控件。
其次,除了浏览器控制台中出现错误和验证失败的可能性之外,这样做有什么害处吗?除了“你不应该”之外,我想不出任何一个理由!
我想这会导致一个更广泛的观点,这可能input type="hidden"
是用词不当,因为它根本不是真正的输入!
我很清楚,完全可以将输入移到外部并使用属性label
引用复选框。id
for
松散相关:一个标签内的两个输入字段