2013-05-22 100 views
0

根據條件,我們只需要顯示1個標籤。這是通過Javascript完成的。這工作正常,但問題是我們得到一個508兼容錯誤,說1個表單元素有2個標籤。這個問題與表中的「for」有關。刪除它也會顯示508錯誤。我厭倦了將第二個標籤更改爲=「org.dateOfReg」,但仍然相同。有沒有辦法只有一個標籤,並從JavaScript動態地傳遞「for」和「name」值?或者還有其他的選擇嗎?請幫忙。非常感謝。Struts2 s:標籤問題

<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> 

感謝

哈利

+0

如果您想通過JavaScript顯示標籤,那麼只*通過JavaScript顯示標籤。只隱藏DOM元素不會*刪除* DOM元素。動態構建標籤,或動態設置單個標籤的值。 –

+0

謝謝戴夫。你有一個簡單的例子來說明如何從js建立動態標籤嗎?謝謝 – Harry

+0

同樣你在JS中構建任何DOM元素,儘管我會使用像jQuery或任何你喜歡的支持庫。 –

回答

0

這裏是你可以做什麼來解決這個問題。只需使用一個標籤並使用JavaScript更改其innerHTML,而不是隱藏標籤。

<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兼容;動態更改標籤文本違背了可訪問性的精神。更好的實現方法是擁有兩個日期字段(「感興趣日期」和「完成日期」)。提交後,根據您對標籤更改的條件,在其中一個字段上強制執行「必需」編輯。