Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Button: Fixing handling of the disabled options on refresh method cal…

…ls. Fixed #8828 - Button: Refresh does not re-enable disabled button.
  • Loading branch information...
commit 93abe02b6052143fac30393291da3fc254bde996 1 parent cb748b4
@tjvantoll tjvantoll authored mikesherov committed
View
36 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);
View
8 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 );
View
4 ui/jquery.ui.button.js
@@ -284,7 +284,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 );
}

0 comments on commit 93abe02

Please sign in to comment.
Something went wrong with that request. Please try again.