Skip to content
Permalink
Browse files

Widget: Added suppressDisabledCheck flag to _on(). Fixes #8800 - Widg…

…et: Ability to use _on() even when disabled.
  • Loading branch information...
scottgonzalez committed Nov 9, 2012
1 parent 6e0a055 commit 84cd214486769a3527b3ab420219c8f9c78f9879
Showing with 52 additions and 3 deletions.
  1. +40 −0 tests/unit/widget/widget_core.js
  2. +12 −3 ui/jquery.ui.widget.js
@@ -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;
@@ -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 )

0 comments on commit 84cd214

Please sign in to comment.
You can’t perform that action at this time.