diff options
author | TJ VanToll <tj.vantoll@gmail.com> | 2012-11-19 15:42:28 -0500 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-11-23 11:09:07 +0100 |
commit | 8def77cb5cfefb733874d15a2294f02fc5ae78ae (patch) | |
tree | 5efa0a8da55715e3c448c0eef074b4a5e0fc3ef6 | |
parent | 188259eef6461604c86e38d06ed60595882a2437 (diff) | |
download | jquery-ui-8def77cb5cfefb733874d15a2294f02fc5ae78ae.tar.gz jquery-ui-8def77cb5cfefb733874d15a2294f02fc5ae78ae.zip |
Button: Fixing handling of the disabled options on refresh method calls. Fixed #8828 - Button: Refresh does not re-enable disabled button.
(cherry picked from commit 93abe02b6052143fac30393291da3fc254bde996)
-rw-r--r-- | tests/unit/button/button_methods.js | 36 | ||||
-rw-r--r-- | tests/unit/button/button_tickets.js | 8 | ||||
-rw-r--r-- | ui/jquery.ui.button.js | 4 |
3 files changed, 39 insertions, 9 deletions
diff --git a/tests/unit/button/button_methods.js b/tests/unit/button/button_methods.js index 6a305d654..c53444005 100644 --- a/tests/unit/button/button_methods.js +++ b/tests/unit/button/button_methods.js @@ -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); diff --git a/tests/unit/button/button_tickets.js b/tests/unit/button/button_tickets.js index 1e901f9d1..1272d368f 100644 --- a/tests/unit/button/button_tickets.js +++ b/tests/unit/button/button_tickets.js @@ -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 :" ); }); -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 ); diff --git a/ui/jquery.ui.button.js b/ui/jquery.ui.button.js index 6363bcdcb..673cd3fbf 100644 --- a/ui/jquery.ui.button.js +++ b/ui/jquery.ui.button.js @@ -283,7 +283,9 @@ $.widget( "ui.button", { }, 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 ) { this._setOption( "disabled", isDisabled ); } |