2013-05-10 37 views
2

我在VS2010中使用.net 4.0和股票驗證器創建html5網站。爲了使驗證器可訪問,我添加了一個詠歎調標籤的到關聯的文本框,並在aria-labelledby值中設置驗證器ID。驗證器的ID模式設置爲靜態。驗證標籤被顯示隱藏:無CSS樣式,觸發時會被刪除。aria-labelledby屬性和asp.net驗證程序

似乎工作正常,因爲NVDA看到錯誤消息並將其關聯到正確的文本框。但是,當我去驗證它,我得到以下錯誤:

唱段,labelledby屬性必須指向一個元素在同一文檔中

所以,問題是......可以詠歎調,labelledby引用不可見的控件?

+0

'display:hidden'?我想你的意思是'可見度:隱藏'或'顯示:無'(都隱藏屏幕閱讀器的內容,因此它可能是其中的任何一個)。 (將它放置在屏幕外)(http://webaim.org/techniques/css/invisiblecontent/)(負文本縮進或左位移的巨大值與位置:相對)可以在視覺上隱藏這個「驗證器」 ? – FelipeAls 2013-05-18 02:24:15

+0

Y ......這很令人尷尬...它顯示:現在沒有。至於隱藏它,該錯誤也用於有視力的用戶。其實這是原始的觀衆。我試圖讓驗證器也適用於屏幕閱讀器。 – Greg 2013-05-23 21:42:37

回答

0

快速回答是肯定的......經過一些更多的測試後,我發現NVDA會讀取驗證錯誤文本的隱藏span標籤。

我遇到的問題是讓一個必需的驗證器有NVDA可接收的錯誤信息。不幸的是,在IsValid函數被觸發後顯示錯誤...在回發後使事件觸發。 NVDA會看到帶有錯誤信息的頁面,但不知道它們是新的。

爲了解決這個問題,我在模糊事件上激發驗證器,如下所示。

我加入正在驗證一個模糊事件的控制,並稱爲附加到控制

onblur="validateControl(RequiredFieldValidatorID)" 

調用的函數使用ValidatorValidate功能驗證。

function validateControl(n) { 
ValidatorValidate(n); 
} 

這使得所需的驗證器啓用模糊。仍然需要重新關注有錯誤的控件,但我認爲我需要抓住選項卡並重定向...正在進行中。