mirror of
https://github.com/jquery/jquery-ui.git
synced 2025-01-07 20:34:24 +00:00
Widget: Added suppressDisabledCheck flag to _on(). Fixes #8800 - Widget: Ability to use _on() even when disabled.
This commit is contained in:
parent
6e0a0553ce
commit
84cd214486
@ -662,6 +662,46 @@ test( "._on() to element (default)", function() {
|
||||
.trigger( "keydown" );
|
||||
});
|
||||
|
||||
test( "._on() to element with suppressDisabledCheck", function() {
|
||||
expect( 18 );
|
||||
var that, widget;
|
||||
$.widget( "ui.testWidget", {
|
||||
_create: function() {
|
||||
that = this;
|
||||
this._on( true, {
|
||||
keyup: this.keyup,
|
||||
keydown: "keydown"
|
||||
});
|
||||
},
|
||||
keyup: function( event ) {
|
||||
equal( that, this );
|
||||
equal( that.element[0], event.currentTarget );
|
||||
equal( "keyup", event.type );
|
||||
},
|
||||
keydown: function( event ) {
|
||||
equal( that, this );
|
||||
equal( that.element[0], event.currentTarget );
|
||||
equal( "keydown", event.type );
|
||||
}
|
||||
});
|
||||
widget = $( "<div></div>" )
|
||||
.testWidget()
|
||||
.trigger( "keyup" )
|
||||
.trigger( "keydown" );
|
||||
widget
|
||||
.testWidget( "disable" )
|
||||
.trigger( "keyup" )
|
||||
.trigger( "keydown" );
|
||||
widget
|
||||
.testWidget( "enable" )
|
||||
.trigger( "keyup" )
|
||||
.trigger( "keydown" );
|
||||
widget
|
||||
.testWidget( "destroy" )
|
||||
.trigger( "keyup" )
|
||||
.trigger( "keydown" );
|
||||
});
|
||||
|
||||
test( "._on() to descendent", function() {
|
||||
expect( 12 );
|
||||
var that, widget, descendant;
|
||||
|
15
ui/jquery.ui.widget.js
vendored
15
ui/jquery.ui.widget.js
vendored
@ -359,9 +359,17 @@ $.Widget.prototype = {
|
||||
return this._setOption( "disabled", true );
|
||||
},
|
||||
|
||||
_on: function( element, handlers ) {
|
||||
_on: function( suppressDisabledCheck, element, handlers ) {
|
||||
var delegateElement,
|
||||
instance = this;
|
||||
|
||||
// no suppressDisabledCheck flag, shuffle arguments
|
||||
if ( typeof suppressDisabledCheck !== "boolean" ) {
|
||||
handlers = element;
|
||||
element = suppressDisabledCheck;
|
||||
suppressDisabledCheck = false;
|
||||
}
|
||||
|
||||
// no element argument, shuffle and use this.element
|
||||
if ( !handlers ) {
|
||||
handlers = element;
|
||||
@ -378,8 +386,9 @@ $.Widget.prototype = {
|
||||
// allow widgets to customize the disabled handling
|
||||
// - disabled as an array instead of boolean
|
||||
// - disabled class as method for disabling individual parts
|
||||
if ( instance.options.disabled === true ||
|
||||
$( this ).hasClass( "ui-state-disabled" ) ) {
|
||||
if ( !suppressDisabledCheck &&
|
||||
( instance.options.disabled === true ||
|
||||
$( this ).hasClass( "ui-state-disabled" ) ) ) {
|
||||
return;
|
||||
}
|
||||
return ( typeof handler === "string" ? instance[ handler ] : handler )
|
||||
|
Loading…
Reference in New Issue
Block a user