我有下面的Struts2代码,它生成一个托运人列表。它只显示在用户选择了托运类型之后( hidden类被JavaScript删除)。
<div class ="showIfNotOther hidden">
<div class="row">
<div class="col-xs-12 rowsecthead" id="shipperInfoHeader"><s:text name="shipperInfo"/></div>
</div>
<s:iterator value="chosenShipperViewList" status="status">
<div class="row small-line-height">
<div class="col-sm-2 col-xs-12 "><label for='<s:property value="%{'deleteShipper'+#status.index}" />' class="pull-right"><s:text name="deleteShipperInfo"></s:text>:</label></div>
<div class="col-sm-3 col-xs-12 text-left">
<s:url var="deleteLink" action="shipment_deleteShipperFromChosenShipperViewList"></s:url>
<s:a id="%{'deleteShipper'+#status.index}" href="%{deleteLink}"> <img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" ></s:a>
</div>
<hr>
</div>
</s:iterator>
Struts2代码生成以下HTML,其中包含每个“删除Shipper”:由id (deleteShipper0、deleteShipper1等)与每个<a>元素关联的标签。这就是我所理解的,必须是508符合。
<div class ="showIfNotOther hidden">
<div class="row">
<div class="col-xs-12 rowsecthead" id="shipperInfoHeader">Shipper Information</div>
</div>
<div class="row small-line-height">
<div class="col-sm-2 col-xs-12 "><label for='deleteShipper0' class="pull-right">Delete Shipper Info:</label></div>
<div class="col-sm-3 col-xs-12 text-left">
<a id="deleteShipper0" href="/llr/shipment_deleteShipperFromChosenShipperViewList.action?organizationName=Mercy"><img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" ></a>
</div>
<hr>
</div>
<div class="row small-line-height">
<div class="col-sm-2 col-xs-12 "><label for='deleteShipper1' class="pull-right">Delete Shipper Info:</label></div>
<div class="col-sm-3 col-xs-12 text-left">
<a id="deleteShipper1" href="/llr/shipment_deleteShipperFromChosenShipperViewList.action?organizationName=Nuclear"><img src="/llr/theme/delete.gif" width="16" height="16" alt="Map Red X" ></a>
</div>
<hr>
</div> 当我将HTML放到https://validator.w3.org/中时,我会得到错误
label元素的
for属性必须引用非隐藏的窗体控件。
HTML确实不兼容(如果不是,我如何修复它),还是这只是W3C标记验证服务中的一个bug?
发布于 2016-04-21 09:47:55
由W3定义的label定义的
label元素表示窗体控件的标题。
您目前使用的链接是label标记,而不是表单控件,这是您的第一个错误。
是的,这是对的:
label元素的
for属性必须引用非隐藏的窗体控件。
在使用屏幕阅读器导航时,您必须能够从标签到窗体控件。但是在您的情况下,您的标签和未来的表单控件(一旦您用表单控件替换了链接)似乎都处于相同的隐藏div中。所以你不必在意这样的话。
但是我认为使用表单控件会从W3验证器中删除这个注释,因为它不处理CSS。
https://stackoverflow.com/questions/36747610
复制相似问题