diff options
author | TJ VanToll <tj.vantoll@gmail.com> | 2013-04-07 12:57:15 -0400 |
---|---|---|
committer | TJ VanToll <tj.vantoll@gmail.com> | 2013-04-09 22:45:46 -0400 |
commit | 2de31fdbf498a6c20d196a96d007ea0f069644c5 (patch) | |
tree | c8d4e5212bf800f537daa35382cf0a42a5b12c50 | |
parent | 5b9e6a44d8b7c3b1c67e71b448951153bec15c95 (diff) | |
download | jquery-ui-2de31fdbf498a6c20d196a96d007ea0f069644c5.tar.gz jquery-ui-2de31fdbf498a6c20d196a96d007ea0f069644c5.zip |
Button: On form reset only call refresh on current button widgets. Fixed #9213: Button: timeout in formResetHandler causing refresh to be called on non-widgets
-rw-r--r-- | tests/unit/button/button_core.js | 24 | ||||
-rw-r--r-- | ui/jquery.ui.button.js | 4 |
2 files changed, 26 insertions, 2 deletions
diff --git a/tests/unit/button/button_core.js b/tests/unit/button/button_core.js index dbc079818..16c7ca450 100644 --- a/tests/unit/button/button_core.js +++ b/tests/unit/button/button_core.js @@ -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(), diff --git a/ui/jquery.ui.button.js b/ui/jquery.ui.button.js index 5e64f5164..dd6892275 100644 --- a/ui/jquery.ui.button.js +++ b/ui/jquery.ui.button.js @@ -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 ) { |