OAA WIDGET_8: Required properties and states must not be empty

Details

  • For each valid role, check that any required properties are not empty.

Rulesets

WCAG 2.0 Requirement 4.1.2 Name, Role, Value
Status: Accepted
Severity: Violation
Priority: Priority 1
IITAA 1.0 13.1 Ensure that scripted functions are usable with assistive technologies.
Type:
Severity: Violation
Priority: Priority 1
Status: Accepted

Markup References

Validation Code

Message

The role %1$S must have property %2$S.

Dependencies

None

Context

.containsAriaAttr

Parameters

None

Code


   function (ruleContext) {
      var passed = true;
      var attrNameArr = new Array();
      var designPatterns = OpenAjax.a11y.aria.designPatterns;
        
      var role = ruleContext.getAttribute("role");
      // - a role value of null indicates no role attribute is present in (FF,Opera, Safari, Chrome).
      // - '' value indicates the role is set to an empty string for all browsers except
      //      IE which also returns '' if no role attribute is present
      // neither of these values allow for unsupported state to be tested
      
      // Make sure the role value is consistent with IE as you don't want to push a null on the stack
      if (role==null)
         role='';
      
      // If the role is valid and there are required properties make sure they are not empty
      
      if (role != '' && designPatterns[role] && designPatterns[role].reqProps != null) {
         for(var i=0; i< designPatterns[role].reqProps.length; i++) {
             var attribute = designPatterns[role].reqProps[i];
            if (OpenAjax.a11y.xbrowser.hasAttribute(ruleContext, attribute)) {
               var nodeValue = ruleContext.getAttribute(designPatterns[role].reqProps[i]).normalizeSpacing();
               if (nodeValue.length == 0) attrNameArr.push(designPatterns[role].reqProps[i]);
            }
         }
      }
      var retMsg = new Array();
      retMsg.push (attrNameArr.toString());
      var passed = attrNameArr.length == 0;
      return new ValidationResult(passed, [ruleContext], attrNameArr, '', retMsg);
   }