]> source.dussan.org Git - jquery.git/commitdiff
Adjust the return value of the tabIndex propHook to match the spec. Fixes #13752.
authorOleg Gaidarenko <markelog@gmail.com>
Tue, 9 Apr 2013 01:33:17 +0000 (21:33 -0400)
committerTimmy Willison <timmywillisn@gmail.com>
Tue, 9 Apr 2013 01:41:08 +0000 (21:41 -0400)
src/attributes.js
test/index.html
test/unit/attributes.js

index 0b9b06b3198b074f082ab623ecd55ff31cecc560..549e95eb0d8566f98043095f9406206a90365e24 100644 (file)
@@ -414,20 +414,14 @@ jQuery.extend({
                }
 
                if ( value !== undefined ) {
-                       if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-                               return ret;
-
-                       } else {
-                               return ( elem[ name ] = value );
-                       }
+                       return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
+                               ret :
+                               ( elem[ name ] = value );
 
                } else {
-                       if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-                               return ret;
-
-                       } else {
-                               return elem[ name ];
-                       }
+                       return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
+                               ret :
+                               elem[ name ];
                }
        },
 
@@ -442,7 +436,7 @@ jQuery.extend({
                                        parseInt( attributeNode.value, 10 ) :
                                        rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
                                                0 :
-                                               undefined;
+                                               -1;
                        }
                }
        }
index 14e686034f576a59de708ac5ce35667690f0cc34..fa7f2bb8f6a6fb0a9da3a760131d943111a4a04b 100644 (file)
@@ -272,6 +272,12 @@ Z</textarea>
                        <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>
+                       <input id="inputWithoutTabIndex"/>
+                       <button id="buttonWithoutTabIndex"></button>
+                       <textarea id="textareaWithoutTabIndex"></textarea>
+                       <menu type="popup">
+                               <menuitem id="menuitemWithoutTabIndex" command="submitbutton" default/>
+                       </menu>
                </div>
 
                <div id="liveHandlerOrder">
index 2292d7ff57295aa17147d06cef37720c93e61735..369a89f705b9aef69cb07f930dd46263048df793 100644 (file)
@@ -687,11 +687,16 @@ test( "prop(String, Object)", function() {
 });
 
 test( "prop('tabindex')", function() {
-       expect( 8 );
+       expect( 11 );
+
+       // inputs without tabIndex attribute
+       equal( jQuery("#inputWithoutTabIndex").prop("tabindex"), 0, "input without tabindex" );
+       equal( jQuery("#buttonWithoutTabIndex").prop("tabindex"), 0, "button without tabindex" );
+       equal( jQuery("#textareaWithoutTabIndex").prop("tabindex"), 0, "textarea without tabindex" );
 
        // elements not natively tabbable
        equal( jQuery("#listWithTabIndex").prop("tabindex"), 5, "not natively tabbable, with tabindex set to 0" );
-       equal( jQuery("#divWithNoTabIndex").prop("tabindex"), undefined, "not natively tabbable, no tabindex set" );
+       equal( jQuery("#divWithNoTabIndex").prop("tabindex"), -1, "not natively tabbable, no tabindex set" );
 
        // anchor with href
        equal( jQuery("#linkWithNoTabIndex").prop("tabindex"), 0, "anchor with href, no tabindex set" );
@@ -699,7 +704,7 @@ test( "prop('tabindex')", function() {
        equal( jQuery("#linkWithNegativeTabIndex").prop("tabindex"), -1, "anchor with href, tabindex set to -1" );
 
        // anchor without href
-       equal( jQuery("#linkWithNoHrefWithNoTabIndex").prop("tabindex"), undefined, "anchor without href, no tabindex set" );
+       equal( jQuery("#linkWithNoHrefWithNoTabIndex").prop("tabindex"), -1, "anchor without href, no tabindex set" );
        equal( jQuery("#linkWithNoHrefWithTabIndex").prop("tabindex"), 1, "anchor without href, tabindex set to 2" );
        equal( jQuery("#linkWithNoHrefWithNegativeTabIndex").prop("tabindex"), -1, "anchor without href, no tabindex set" );
 });
@@ -709,7 +714,7 @@ test( "prop('tabindex', value)", 10, function() {
        var clone,
                element = jQuery("#divWithNoTabIndex");
 
-       equal( element.prop("tabindex"), undefined, "start with no tabindex" );
+       equal( element.prop("tabindex"), -1, "start with no tabindex" );
 
        // set a positive string
        element.prop( "tabindex", "1" );