2017-02-09 54 views

回答

0

您應該在所有元素上設置屬性,如果您想爲第一個複選框設置aria-invalid爲true,則只應添加到最後一個。

例:

<input name="nom" aria-invalid="false" 
    onclick="checkValidity('nom', ' ', 'your message 1');"> 
<br /> 
<input name="courriel" aria-invalid="false" 
    onclick="checkValidity('courriel', '@', 'your second message);"> 

//js 
<script type="text/javascript> 
    var checkValidity = function(aID, aMsg){ 
    var elem = this, 
    invalid = (elem.value.indexOf(aSearchTerm) < 0); 
    if (invalid) { 
    elem.setAttribute("aria-invalid", "true"); 
    updateAlert(aMsg); 
    } else { 
    elem.setAttribute("aria-invalid", "false"); 
} 
} 
</script> 

或者你可以使用jQuery

0

在一般情況下,這是在錯誤應該有唱段,無效的設置爲true的任何對象。在fieldset上設置可能有點混亂。這是否意味着字段集中的所有對象都出錯了?如果某些人出錯而其他人不是呢?這是否會使字段集錯誤?或者是部分錯誤?也許你有一個設計讓錯誤的字段集合有意義,但這可能是一個例外而非規則。

從技術上講,從html規格的角度來看,在字段集(https://www.w3.org/TR/html51/sec-forms.html#the-fieldset-element)上設置aria-invalid是有效的。請參閱「允許的ARIA狀態和屬性屬性」。

雖然,我很困惑,你的原始問題。你想在複選框上設置aria-invalid?複選框如何失效?這是要麼檢查與否。您是否將用戶置於檢查框無效的情況下?如果是這樣,不應該複選框被禁用?

而對於aria-describedby,則需要使用各種瀏覽器和屏幕閱讀器來測試。有時與aria-describedby關聯的標籤不會立即讀取。可能會暫停,或者屏幕可能會顯示擊中alt + <somekey>以聽取說明。另一方面,aria-labelledby立即被讀取。

0

我有一個複選框,設置爲表單元素,需要對他們使用aria-invalidaria-describedby屬性。該屬性應該寫在每個複選框還是一個字段集上?

從理論的角度來看,將它設置在fieldset上更有意義。

單個複選框只有兩個狀態,我不能看到一個字段中的一個單獨的複選框,怎麼可能有錯誤,但如果只有一個複選框(例如許可協議)

出於同樣的原因如果您的aria-describedby指向錯誤消息,則它必須位於相同的元素上。