Fix jquery.tabIndex even more.
authorKrinkle <krinkle@users.mediawiki.org>
Sat, 11 Jun 2011 10:56:54 +0000 (10:56 +0000)
committerKrinkle <krinkle@users.mediawiki.org>
Sat, 11 Jun 2011 10:56:54 +0000 (10:56 +0000)
* Discovered through TestSwarm. Aside from IE6/IE7, which already needed extra checking, when IE6/IE7 is on Windows NT 5.2, it can also return NaN.

resources/jquery/jquery.tabIndex.js

index 4c40677..33e0604 100644 (file)
@@ -9,12 +9,14 @@
  */
 $.fn.firstTabIndex = function() {
        var minTabIndex = null;
-       $(this).find( '[tabindex]' ).each( function( i ) {
+       $(this).find( '[tabindex]' ).each( function() {
                var tabIndex = parseInt( $(this).attr( 'tabindex' ), 10 );
                // In IE6/IE7 the above jQuery selector returns all elements,
                // becuase it has a default value for tabIndex in IE6/IE7 of 0
-               // (rather than null/undefined). Therefore check "> 0" as well
-               if ( tabIndex > 0 ) {
+               // (rather than null/undefined). Therefore check "> 0" as well.
+               // Under IE7 under Windows NT 5.2 is also capable of returning NaN.
+               if ( tabIndex > 0 && !isNaN( tabIndex ) ) {
+                       // Initial value
                        if ( minTabIndex === null ) {
                                minTabIndex = tabIndex;
                        } else if ( tabIndex < minTabIndex ) {
@@ -32,12 +34,15 @@ $.fn.firstTabIndex = function() {
  */
 $.fn.lastTabIndex = function() {
        var maxTabIndex = null;
-       $(this).find( '[tabindex]' ).each( function( i ) {
+       $(this).find( '[tabindex]' ).each( function() {
                var tabIndex = parseInt( $(this).attr( 'tabindex' ), 10 );
-               if ( maxTabIndex === null ) {
-                       maxTabIndex = tabIndex;
-               } else if ( tabIndex > maxTabIndex ) {
-                       maxTabIndex = tabIndex;
+               if ( tabIndex > 0 && !isNaN( tabIndex ) ) {
+                       // Initial value
+                       if ( maxTabIndex === null ) {
+                               maxTabIndex = tabIndex;
+                       } else if ( tabIndex > maxTabIndex ) {
+                               maxTabIndex = tabIndex;
+                       }
                }
        } );
        return maxTabIndex;