我们有以下代码,其中我们在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>
提前感谢!
答案 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?
没有。它应该被更改,因为它是错误的,并且浏览器必须纠正错误以确定标签与哪个元素相关联。
标签没有标记隐藏的输入,将其移动到别处。