IITAA Rule 79: Effective labels should be unique.
Rule Mapping
- Status: Accepted
- Severity: Violation
- Priority: Priority 1
Markup References
Validation Code
Dependencies
None
Context
document
Parameters
None
Code
function (ruleContext) {
var dataarray = new Array();
var xp = "//button|//input|//textarea|//select";
var xpathResult = OpenAjax.a11y.xpath.evaluate(xp, ruleContext, util.defaultNSResolver, OpenAjax.a11y.xpath.XPathResult.ANY_TYPE, null);
var r = xpathResult.iterateNext();
while (r) {
var formObj = { node: r,
label: util.parseLabel(r).label,
legend: null,
duplicatelabel: false
}; // end object
formObj.legend = util.getFieldSetNodeLegendForElement(r);
if (formObj.label != null) {
formObj.label = formObj.label.toLowerCase();
} // endif
if (formObj.legend != null) {
formObj.legend = formObj.legend.toLowerCase();
} // endif
dataarray.push(formObj);
r = xpathResult.iterateNext();
} // endwhile
var retArray = new Array();
var retMsgArray = new Array();
for (var i=0, j=0, n=dataarray.length; i<n; i++) {
if (dataarray[i].label == null) continue;
var effLab1 = dataarray[i].legend + ' ' + dataarray[i].label;
for (j=i+1; j<n; j++) {
if (dataarray[j].label == null) continue;
var effLab2 = dataarray[j].legend + ' ' + dataarray[j].label;
if (effLab1 == effLab2) {
dataarray[i].duplicatelabel=dataarray[j].duplicatelabel=true;
}//endif
} //endfor
} //endfor
for (var i=0; i < dataarray.length;i++) {
retArray.push(dataarray[i].node);
if (dataarray[i].duplicatelabel) {
if (dataarray[i].legend != null) {
retMsgArray.push(dataarray[i].legend + ' ' + dataarray[i].label);
} else {
retMsgArray.push(dataarray[i].label);
} //end if
} //end if
} //end for
var passed = (retArray.length == 0);
return new ValidationResult(passed, retArray, [], '', retMsgArray);
} // endfunction
>
var dataarray = new Array();
var xp = "//button|//input|//textarea|//select";
var xpathResult = OpenAjax.a11y.xpath.evaluate(xp, ruleContext, util.defaultNSResolver, OpenAjax.a11y.xpath.XPathResult.ANY_TYPE, null);
var r = xpathResult.iterateNext();
while (r) {
var formObj = { node: r,
label: util.parseLabel(r).label,
legend: null,
duplicatelabel: false
}; // end object
formObj.legend = util.getFieldSetNodeLegendForElement(r);
if (formObj.label != null) {
formObj.label = formObj.label.toLowerCase();
} // endif
if (formObj.legend != null) {
formObj.legend = formObj.legend.toLowerCase();
} // endif
dataarray.push(formObj);
r = xpathResult.iterateNext();
} // endwhile
var retArray = new Array();
var retMsgArray = new Array();
for (var i=0, j=0, n=dataarray.length; i<n; i++) {
if (dataarray[i].label == null) continue;
var effLab1 = dataarray[i].legend + ' ' + dataarray[i].label;
for (j=i+1; j<n; j++) {
if (dataarray[j].label == null) continue;
var effLab2 = dataarray[j].legend + ' ' + dataarray[j].label;
if (effLab1 == effLab2) {
dataarray[i].duplicatelabel=dataarray[j].duplicatelabel=true;
}//endif
} //endfor
} //endfor
for (var i=0; i < dataarray.length;i++) {
retArray.push(dataarray[i].node);
if (dataarray[i].duplicatelabel) {
if (dataarray[i].legend != null) {
retMsgArray.push(dataarray[i].legend + ' ' + dataarray[i].label);
} else {
retMsgArray.push(dataarray[i].label);
} //end if
} //end if
} //end for
var passed = (retArray.length == 0);
return new ValidationResult(passed, retArray, [], '', retMsgArray);
} // endfunction
>