mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Tabs: Prevent default action of clicks even when disabled. Fixes #9413 - Tabs: Disabled tabs are still clickable.
This commit is contained in:
parent
7da828375a
commit
4148acfa9a
@ -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 );
|
||||
|
12
ui/jquery.ui.tabs.js
vendored
12
ui/jquery.ui.tabs.js
vendored
@ -477,11 +477,7 @@ $.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";
|
||||
@ -489,6 +485,12 @@ $.widget( "ui.tabs", {
|
||||
}
|
||||
|
||||
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" } );
|
||||
|
Loading…
Reference in New Issue
Block a user