Commit 49d0d5b7 authored by Scott González's avatar Scott González

Fixed tabindex normalization so that elements that natively support tabbing,...

Fixed tabindex normalization so that elements that natively support tabbing, but don't have a tabindex explicitly set return 0 instead of undefined.

Removed jQuery.support.tabindex since we're only normalizing non-XML right now and all browsers support tabIndex for HTML documents.
parent f9e0b1ed
......@@ -968,11 +968,15 @@ jQuery.extend({
if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
return elem.getAttributeNode( name ).nodeValue;
// elem.tabindex doesn't always return the correct value
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
if ( name == jQuery.props.tabindex ) {
var attributeNode = elem.getAttributeNode(jQuery.props.tabindex);
return attributeNode && attributeNode.specified && attributeNode.value || undefined;
if ( name == "tabIndex" ) {
var attributeNode = elem.getAttributeNode( "tabIndex" );
return attributeNode && attributeNode.specified
? attributeNode.value
: elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)
? 0
: undefined;
}
return elem[ name ];
......
......@@ -51,10 +51,6 @@
// (IE uses styleFloat instead of cssFloat)
cssFloat: !!a.style.cssFloat,
// Verify tabindex attribute existence
// (IE uses tabIndex instead of tabindex)
tabindex: !a.getAttributeNode('tabindex'),
// Will be defined later
scriptEval: false,
noCloneEvent: true
......@@ -101,5 +97,5 @@ jQuery.props = {
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
tabindex: jQuery.support.tabindex ? "tabindex" : "tabIndex"
tabindex: "tabIndex"
};
......@@ -562,7 +562,7 @@ test("attr('tabindex')", function() {
equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
// link without a tabindex
equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, tabbable by default');
equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default');
});
test("attr('tabindex', value)", function() {
......@@ -1560,7 +1560,7 @@ test("removeClass(String) - simple", function() {
});
test("toggleClass(String)", function() {
expect(6);
expect(6);
var e = jQuery("#firstp");
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test");
......@@ -1568,12 +1568,12 @@ test("toggleClass(String)", function() {
e.toggleClass("test");
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test", false);
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test", true);
ok( e.is(".test"), "Assert class present" );
e.toggleClass("test", false);
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test", false);
ok( !e.is(".test"), "Assert class not present" );
e.toggleClass("test", true);
ok( e.is(".test"), "Assert class present" );
e.toggleClass("test", false);
ok( !e.is(".test"), "Assert class not present" );
});
test("removeAttr(String", 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