Skip to content

Commit

Permalink
Button: Fixing handling of the disabled options on refresh method cal…
Browse files Browse the repository at this point in the history
…ls. Fixed #8828 - Button: Refresh does not re-enable disabled button.

(cherry picked from commit 93abe02)
  • Loading branch information
tjvantoll authored and jzaefferer committed Nov 23, 2012
1 parent 188259e commit 8def77c
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 9 deletions.
36 changes: 36 additions & 0 deletions tests/unit/button/button_methods.js
Expand Up @@ -13,4 +13,40 @@ test("destroy", function() {
}); });
}); });


test( "refresh: Ensure disabled state is preserved correctly.", function() {
expect( 8 );

var element = $( "<a href='#'></a>" );
element.button({ disabled: true }).button( "refresh" );
ok( element.button( "option", "disabled" ), "Anchor button should remain disabled after refresh" ); //See #8237

element = $( "<div></div>" );
element.button({ disabled: true }).button( "refresh" );
ok( element.button( "option", "disabled" ), "<div> buttons should remain disabled after refresh" );

element = $( "<button></button>" );
element.button( { disabled: true} ).button( "refresh" );
ok( element.button( "option", "disabled" ), "<button> should remain disabled after refresh");

element = $( "<input type='checkbox'>" );
element.button( { disabled: true} ).button( "refresh" );
ok( element.button( "option", "disabled" ), "Checkboxes should remain disabled after refresh");

element = $( "<input type='radio'>" );
element.button( { disabled: true} ).button( "refresh" );
ok( element.button( "option", "disabled" ), "Radio buttons should remain disabled after refresh");

element = $( "<button></button>" );
element.button( { disabled: true} ).prop( "disabled", false ).button( "refresh" );
ok( !element.button( "option", "disabled" ), "Changing a <button>'s disabled property should update the state after refresh."); //See #8828

element = $( "<input type='checkbox'>" );
element.button( { disabled: true} ).prop( "disabled", false ).button( "refresh" );
ok( !element.button( "option", "disabled" ), "Changing a checkbox's disabled property should update the state after refresh.");

element = $( "<input type='radio'>" );
element.button( { disabled: true} ).prop( "disabled", false ).button( "refresh" );
ok( !element.button( "option", "disabled" ), "Changing a radio button's disabled property should update the state after refresh.");
});

})(jQuery); })(jQuery);
8 changes: 0 additions & 8 deletions tests/unit/button/button_tickets.js
Expand Up @@ -72,12 +72,4 @@ test( "#7534 - Button label selector works for ids with \":\"", function() {
ok( group.find( "label" ).is( ".ui-button" ), "Found an id with a :" ); ok( group.find( "label" ).is( ".ui-button" ), "Found an id with a :" );
}); });


test( "#8237 - Anchor tags lose disabled state when refreshed", function() {
expect( 1 );
var element = $( "<a id='a8237'></a>" ).appendTo( "#qunit-fixture" );

element.button({ disabled: true }).button( "refresh" );
ok( element.button( "option", "disabled" ), "Anchor button should remain disabled after refresh" );
});

})( jQuery ); })( jQuery );
4 changes: 3 additions & 1 deletion ui/jquery.ui.button.js
Expand Up @@ -283,7 +283,9 @@ $.widget( "ui.button", {
}, },


refresh: function() { refresh: function() {
var isDisabled = this.element.is( ":disabled" ) || this.element.hasClass( "ui-button-disabled" ); //See #8237 & #8828
var isDisabled = this.element.is( "input, button" ) ? this.element.is( ":disabled" ) : this.element.hasClass( "ui-button-disabled" );

if ( isDisabled !== this.options.disabled ) { if ( isDisabled !== this.options.disabled ) {
this._setOption( "disabled", isDisabled ); this._setOption( "disabled", isDisabled );
} }
Expand Down

0 comments on commit 8def77c

Please sign in to comment.