2017-08-28 37 views
0

我正在努力讓屏幕閱讀器更易於使用我的代碼,並且遇到了這種情況,並且找不到任何答案。如果只有在滿足條件的情況下按鈕纔可見,那麼您如何恰當地應用sr-only文本?當按鈕不可見時,我想避免屏幕閱讀器閱讀文本,因爲此時按鈕不會提供任何功能。什麼是正確的方式來應用sr-only文本的asp:LinkBut​​tons是可變的可見?

按鈕在分頁可用時可見(根據需要選擇下一個和上一個)。 請參閱附件中的代碼。

<div id="divPager" runat="server" class="gutter-bottom text-center"> 
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" RenderMode="Inline"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnSearch" EventName="ServerClick" /> 
    </Triggers> 
    <ContentTemplate> 

     <ul class="pager"> 
     <li> 
      <asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage"> 
      <i class="fa fa-arrow-left"></i> Prev 
      </asp:LinkButton> 
     </li> 
     <li> 
      <asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage"> 
      Next <i class="fa fa-arrow-right"></i> 
      </asp:LinkButton> 
     </li> 
     </ul> 

    </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 

有一件事我已經考慮被放置跨度內的asp:LinkBut​​ton的(S),並從代碼隱藏有條件地將類=「SR-只有」和相應的跨度文本。我在正確的軌道上嗎?有沒有更好的辦法?感謝您的輸入

+0

考慮增加你的意見的主要職務爲編輯提供新的信息。 – bendl

+0

感謝@bendl,接受了您的建議,並在主帖中添加了我的評論作爲附加文字。 – JakeofSpades

+0

您是在屏幕閱讀器中測試嗎?一般來說,一個sr-only類只是可視化地隱藏文本。你的頁面可能通過display:none或者類似的方式完全隱藏按鈕,所以它不應該和你的sr-only樣式衝突。一個功能性示例會有所幫助 – aardrian

回答

0

我張貼我目前的解決方案,以解決這個問題。我絕不認爲這是最好的解決方案,如果你花時間向我展示更好的方法,我將不勝感激。 這裏是我做了我的aspx頁:

<ul class="pager"> 
      <li> 
       <asp:LinkButton runat="server" ID="btnPrev" Visible="False" CommandName="PrevPage"> 
       <span id="btnPrevSR" runat="server" class="sr-only"></span> 
       <i class="fa fa-arrow-left"></i> Prev 
       </asp:LinkButton> 
      </li> 
      <li> 
       <asp:LinkButton runat="server" ID="btnNext" Visible="False" CommandName="NextPage"> 
       <span id="btnNextSR" runat="server" class="sr-only"></span> 
       <i class="fa fa-arrow-right"></i> Next 
       </asp:LinkButton> 
      </li> 
      </ul> 

在我後面的代碼

If btnPrev.Visible = True Then 
    btnPrevSR.InnerHtml = "Previous Page of Announcements" 
End If 

If btnNext.Visible = True Then 
    btnNextSR.InnerHtml = "Next Page of Announcements" 
End If 

下面就是這段代碼看起來產生時等。注意空<li>因爲visible設置爲false btnPrev

<ul class="pager"> 
      <li> 

      </li> 
      <li> 
       <a id="ctl00_ctl00_cpContent_cpContent_btnNext" href="javascript:__doPostBack(&#39;ctl00$ctl00$cpContent$cpContent$btnNext&#39;,&#39;&#39;)"><span id="ctl00_ctl00_cpContent_cpContent_btnNextSR" class="sr-only">Next Page of Announcements</span> 
       <i class="fa fa-arrow-right"></i> Next 
       </a> 
      </li> 
      </ul> 
+0

我的.NET日子在我身後,但我知道'runat = server'的結果是HTML,它可能看起來不像你放在那裏的東西。你能分享HTML輸出嗎?例如,'visible = false'是否會生成任何元素,帶有'display:none'的元素,具有CSS'visibility'設置的元素,...?這些都可能導致不同的結果。我迄今看到的東西雖然看起來不錯。 – aardrian

+0

@aardrian當其中一個按鈕被設置爲visible = false時,會發生這種情況。列表項

  • 爲空的任何html。我將在我的chrome瀏覽器的sources選項卡中添加從開發工具中看到的結果。 – JakeofSpades

    +0

    我看到你的更新答案。我認爲缺失的元素可能是最好的方法。 – aardrian

    相關問題