0

根据条件,我们只需要显示 1 个标签。这是通过 Javascript 完成的。这很好用,但问题是我们得到一个 508 兼容错误,说 1 个表单元素有 2 个标签。问题在于表中的“for”。删除它也会显示 508 错误。我厌倦了将第二个标签更改为 for="org.dateOfReg",但还是一样。有没有办法只有 1 个标签并从 javascript 动态传递“for”和“name”值?或者还有其他选择吗?请帮忙。非常欣赏它。

    <tr id="showDates">
       <td id="TypeDate1"><s:label for="dateOfReg" name="dateofReg" value="Date of Interest" /><span class="required" >*</span> :</td>  
       <td id="TypeDate2"><s:label for="dateOfReg" name="dateofReg" value="Date of Completion" /><span class="required" >*</span> :</td>                                     
      <td id="typeDatePick">
        <sj:datepicker showButtonPanel="true" id="dateOfReg" name="org.dateOfReg" displayFormat="mm/dd/yy" label="Date of Interest" changeMonth="true" changeYear="true" size="7"/>
       </td>
  </tr>

谢谢

哈利

4

1 回答 1

0

以下是您可以采取的措施来解决此问题。只需一个标签并使用 JavaScript 更改其内部 HTML,而不是隐藏标签。

<tr id="showDates">
    <td id="TypeDateLabel"><s:label for="dateOfReg" name="dateofReg" value="Date of Interest" /><span class="required" >*</span> :</td>  
    <td id="typeDatePick">
        <sj:datepicker showButtonPanel="true" id="dateOfReg" name="org.dateOfReg" displayFormat="mm/dd/yy" label="Date of Interest" changeMonth="true" changeYear="true" size="7"/>
    </td>
</tr>
<script language="javascript">
    function TriggerToChangeLabel(triggerCondition)
    {
        if (triggerCondition)
            $("dateOfReg").innerHtml = "Date of Interest";
        else
            $("dateOfReg").innerHtml = "Date of Completion";
    }
</script>

但请记住,即使它使代码 508 兼容;动态更改标签文本违背了可访问性的精神。更好的实现方式是拥有两个日期字段(“感兴趣的日期”和“完成日期”)。提交后,根据标签更改的条件对其中一个字段执行“必需”编辑。

于 2013-12-04T19:57:25.733 回答