Bug Tracker

Ticket #3916: tabindex.patch

File tabindex.patch, 3.9 KB (added by scottgonzalez, 13 years ago)
  • Users/sgonzale/Documents/workspace/jQuery/src/core.js

     
    986986                                        var attributeNode = elem.getAttributeNode( "tabIndex" );
    987987                                        return attributeNode && attributeNode.specified
    988988                                                ? attributeNode.value
    989                                                 : elem.nodeName.match(/^(a|area|button|input|object|select|textarea)$/i)
     989                                                : elem.nodeName.match(/(button|input|object|select|textarea)/i)
    990990                                                        ? 0
    991                                                         : undefined;
     991                                                        : elem.nodeName.match(/^(a|area)$/i) && elem.href
     992                                                                ? 0
     993                                                                : undefined;
    992994                                }
    993995
    994996                                return elem[ name ];
  • Users/sgonzale/Documents/workspace/jQuery/test/index.html

     
    198198                </div>
    199199               
    200200                <div id="tabindex-tests">
    201                         <ol id="listWithTabIndex" tabindex="0">
     201                        <ol id="listWithTabIndex" tabindex="5">
    202202                                <li id="foodWithNegativeTabIndex" tabindex="-1">Rice</li>
    203203                                <li id="foodNoTabIndex">Beans</li>
    204204                                <li>Blinis</li>
     
    209209                        <span>...</span><a href="#" id="linkWithNoTabIndex">Eat lots of food</a><span>...</span> |
    210210                        <span>...</span><a href="#" id="linkWithTabIndex" tabindex="2">Eat a little food</a><span>...</span> |
    211211                        <span>...</span><a href="#" id="linkWithNegativeTabIndex" tabindex="-1">Eat no food</a><span>...</span>
     212                        <span>...</span><a id="linkWithNoHrefWithNoTabIndex">Eat a burger</a><span>...</span>
     213                        <span>...</span><a id="linkWithNoHrefWithTabIndex" tabindex="1">Eat some funyuns</a><span>...</span>
     214                        <span>...</span><a id="linkWithNoHrefWithNegativeTabIndex" tabindex="-1">Eat some funyuns</a><span>...</span>
    212215                </div>
    213216        </div>
    214217        </dl>
  • Users/sgonzale/Documents/workspace/jQuery/test/unit/core.js

     
    552552}
    553553
    554554test("attr('tabindex')", function() {
    555         expect(5);
     555        expect(8);
    556556
    557         // tabindex 0
    558         equals(jQuery('#listWithTabIndex').attr('tabindex'), 0, 'tabindex of 0');
    559 
    560         // positive tabindex
    561         equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'tabindex of 2');
     557        // elements not natively tabbable
     558        equals(jQuery('#listWithTabIndex').attr('tabindex'), 5, 'not natively tabbable, with tabindex set to 0');
     559        equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'not natively tabbable, no tabindex set');
     560       
     561        // anchor with href
     562        equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'anchor with href, no tabindex set');
     563        equals(jQuery('#linkWithTabIndex').attr('tabindex'), 2, 'anchor with href, tabindex set to 2');
     564        equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'anchor with href, tabindex set to -1');
    562565
    563         // negative tabindex
    564         equals(jQuery('#linkWithNegativeTabIndex').attr('tabindex'), -1, 'negative tabindex');
    565 
    566         // regular element without a tabindex
    567         equals(jQuery('#divWithNoTabIndex').attr('tabindex'), undefined, 'no tabindex, not tabbable by default');
    568 
    569     // link without a tabindex
    570         equals(jQuery('#linkWithNoTabIndex').attr('tabindex'), 0, 'no tabindex, tabbable by default');
     566        // anchor without href
     567        equals(jQuery('#linkWithNoHrefWithNoTabIndex').attr('tabindex'), undefined, 'anchor without href, no tabindex set');
     568        equals(jQuery('#linkWithNoHrefWithTabIndex').attr('tabindex'), 1, 'anchor without href, tabindex set to 2');
     569        equals(jQuery('#linkWithNoHrefWithNegativeTabIndex').attr('tabindex'), -1, 'anchor without href, no tabindex set');
    571570});
    572571
    573572test("attr('tabindex', value)", function() {