Permalink
Browse files

Tabs: Prevent default action of clicks even when disabled. Fixes #941…

…3 - Tabs: Disabled tabs are still clickable.
  • Loading branch information...
scottgonzalez committed Jul 3, 2013
1 parent 7da8283 commit 4148acfa9a7b1494f2d87559362c07a59f8e47f8
Showing with 14 additions and 7 deletions.
  1. +7 −2 tests/unit/tabs/tabs_options.js
  2. +7 −5 ui/jquery.ui.tabs.js
@@ -144,10 +144,11 @@ test( "{ collapsible: true }", function() {
});
test( "disabled", function() {
expect( 22 );
expect( 23 );
// fully enabled by default
var element = $( "#tabs1" ).tabs();
var event,
element = $( "#tabs1" ).tabs();
disabled( element, false );
ok( !element.tabs( "widget" ).hasClass( "ui-state-disabled" ), "after: wrapper doesn't have ui-state-disabled class" );
@@ -178,6 +179,10 @@ test( "disabled", function() {
ok( !element.tabs( "widget" ).hasClass( "ui-tabs-disabled" ), "after: wrapper doesn't have ui-tabs-disabled class" );
ok( !element.tabs( "widget" ).attr( "aria-disabled" ), "after: wrapper doesn't have aria-disabled attr" );
event = $.Event( "click" );
element.find( ".ui-tabs-anchor" ).eq( 0 ).trigger( event );
ok( event.isDefaultPrevented(), "click is prevented for disabled tab" );
// enable all tabs
element.tabs( "option", "disabled", [] );
disabled( element, false );
View
@@ -477,18 +477,20 @@ $.widget( "ui.tabs", {
},
_setupEvents: function( event ) {
var events = {
click: function( event ) {
event.preventDefault();
}
};
var events = {};
if ( event ) {
$.each( event.split(" "), function( index, eventName ) {
events[ eventName ] = "_eventHandler";
});
}
this._off( this.anchors.add( this.tabs ).add( this.panels ) );
// Always prevent the default action, even when disabled
this._on( true, this.anchors, {
click: function( event ) {
event.preventDefault();
}
});
this._on( this.anchors, events );
this._on( this.tabs, { keydown: "_tabKeydown" } );
this._on( this.panels, { keydown: "_panelKeydown" } );

0 comments on commit 4148acf

Please sign in to comment.