Commit 96152559 authored by John Resig's avatar John Resig

Landing a fix for non-link anchor tabIndex (from scott.gonzalez). Fixes ticket #3916.

parent d6e54142
...@@ -986,9 +986,11 @@ jQuery.extend({ ...@@ -986,9 +986,11 @@ jQuery.extend({
var attributeNode = elem.getAttributeNode( "tabIndex" ); var attributeNode = elem.getAttributeNode( "tabIndex" );
return attributeNode && attributeNode.specified return attributeNode && attributeNode.specified
? attributeNode.value ? attributeNode.value
: elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i) : elem.nodeName.match(/(button|input|object|select|textarea)/i)
? 0 ? 0
: undefined; : elem.nodeName.match(/^(a|area)$/i) && elem.href
? 0
: undefined;
} }
return elem[ name ]; return elem[ name ];
......
...@@ -198,7 +198,7 @@ Z</textarea> ...@@ -198,7 +198,7 @@ Z</textarea>
</div> </div>
<div id="tabindex-tests"> <div id="tabindex-tests">
<ol id="listWithTabIndex" tabindex="0"> <ol id="listWithTabIndex" tabindex="5">
<li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li> <li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li>
<li id="foodNoTabIndex">Beans</li> <li id="foodNoTabIndex">Beans</li>
<li>Blinis</li> <li>Blinis</li>
...@@ -209,6 +209,9 @@ Z</textarea> ...@@ -209,6 +209,9 @@ Z</textarea>
<span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> | <span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> |
<span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> | <span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> |
<span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span> <span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span>
<span>...</span><a id="linkWithNoHrefWithNoTabIndex">Eat a burger</a><span>...</span>
<span>...</span><a id="linkWithNoHrefWithTabIndex" tabindex="1">Eat some funyuns</a><span>...</span>
<span>...</span><a id="linkWithNoHrefWithNegativeTabIndex" tabindex="-1">Eat some funyuns</a><span>...</span>
</div> </div>
</div> </div>
</dl> </dl>
......
...@@ -552,22 +552,21 @@ if ( !isLocal ) { ...@@ -552,22 +552,21 @@ if ( !isLocal ) {
} }
test("attr('tabindex')", function() { test("attr('tabindex')", function() {
expect(5); expect(8);
// tabindex 0
equals(jQuery('#listWithTabIndex').attr('tabindex'), 0, 'tabindex of 0');
// positive tabindex
equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'tabindex of 2');
// negative tabindex
equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'negative tabindex');
// regular element without a tabindex
equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
// link without a tabindex // elements not natively tabbable
equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default'); equals(jQuery('#listWithTabIndex').attr('tabindex'), 5, 'not natively tabbable, with tabindex set to 0');
equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'not natively tabbable, no tabindex set');
// anchor with href
equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'anchor with href, no tabindex set');
equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'anchor with href, tabindex set to 2');
equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'anchor with href, tabindex set to -1');
// anchor without href
equals(jQuery('#linkWithNoHrefWithNoTabIndex').attr('tabindex'), undefined, 'anchor without href, no tabindex set');
equals(jQuery('#linkWithNoHrefWithTabIndex').attr('tabindex'), 1, 'anchor without href, tabindex set to 2');
equals(jQuery('#linkWithNoHrefWithNegativeTabIndex').attr('tabindex'), -1, 'anchor without href, no tabindex set');
}); });
test("attr('tabindex', value)", function() { test("attr('tabindex', value)", function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment