Skip to content

Commit

Permalink
Button: On form reset only call refresh on current button widgets. Fi…
Browse files Browse the repository at this point in the history
…xed #9213: Button: timeout in formResetHandler causing refresh to be called on non-widgets

(cherry picked from commit 2de31fd)
  • Loading branch information
tjvantoll authored and scottgonzalez committed Apr 17, 2013
1 parent 6b72efa commit 1152e65
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
24 changes: 24 additions & 0 deletions tests/unit/button/button_core.js
Expand Up @@ -153,6 +153,30 @@ test( "#6262 - buttonset not applying ui-corner to invisible elements", function
ok( set.find( "label:eq(2)" ).is( ".ui-button.ui-corner-right" ) );
});

asyncTest( "Resetting a button's form should refresh the visual state of the button widget to match.", function() {
expect( 2 );
var form = $( "<form>" +
"<button></button>" +
"<label for='c1'></label><input id='c1' type='checkbox' checked>" +
"</form>" ),
button = form.find( "button" ).button(),
checkbox = form.find( "input[type=checkbox]" ).button();

checkbox.prop( "checked", false ).button( "refresh" );
ok( !checkbox.button( "widget" ).hasClass( "ui-state-active" ) );

form.get( 0 ).reset();

// #9213: If a button has been removed, refresh should not be called on it when
// its corresponding form is reset.
button.remove();

setTimeout(function() {
ok( checkbox.button( "widget" ).hasClass( "ui-state-active" ));
start();
});
});

asyncTest( "#6711 Checkbox/Radiobutton do not Show Focused State when using Keyboard Navigation", function() {
expect( 2 );
var check = $( "#check" ).button(),
Expand Down
4 changes: 2 additions & 2 deletions ui/jquery.ui.button.js
Expand Up @@ -19,9 +19,9 @@ var lastActive, startXPos, startYPos, clickDragged,
stateClasses = "ui-state-hover ui-state-active ",
typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
formResetHandler = function() {
var buttons = $( this ).find( ":ui-button" );
var form = $( this );
setTimeout(function() {
buttons.button( "refresh" );
form.find( ":ui-button" ).button( "refresh" );
}, 1 );
},
radioGroup = function( radio ) {
Expand Down

0 comments on commit 1152e65

Please sign in to comment.