我是否真的必须从标签中删除第二个隐藏的表单字段才能验证我的HTML?

时间:2011-04-22 22:06:52

标签: html forms html5 w3c w3c-validation

我们有以下代码,其中我们在w3c验证器中遇到错误“带有for属性的标签元素的任何输入后代必须具有与属性匹配的ID值。”和“标签元素最多可包含一个输入,按钮,选择,textarea或keygen后代。”这个问题应该被验证者忽略(因为它看起来很正确)还是应该改变以安抚w3c?请注意,这是html5 doctype。

<fieldset>
  <label for="user_is_subscribed">
    <input type="hidden" value="0" name="user[is_subscribed]">
    <input type="checkbox" value="1" name="user[is_subscribed]" id="user_is_subscribed">
    Newsletter Signup
  </label>
  <span class="checkLabel">We will never spam or give away your information</span>
</fieldset>

提前感谢!

2 个答案:

答案 0 :(得分:8)

标签最多应包含一个输入元素。将隐藏的输入移出标签。此外,当输入是标签的后代时,for属性是多余的。

<fieldset>
  <input type="hidden" value="0" name="user[is_subscribed]">
  <label>
    <input type="checkbox" value="1" name="user[is_subscribed]" id="user_is_subscribed">
    Newsletter Signup
  </label>
  <span class="checkLabel">We will never spam or give away your information</span>
</fieldset>

答案 1 :(得分:7)

  

这是否应该被验证器

忽略

没有

  

(因为它看起来很正确)

不是

  

或者应该改变

  

安抚w3c?

没有。它应该被更改,因为它是错误的,并且浏览器必须纠正错误以确定标签与哪个元素相关联。

标签没有标记隐藏的输入,将其移动到别处。