aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTJ VanToll <tj.vantoll@gmail.com>2013-04-07 12:57:15 -0400
committerScott González <scott.gonzalez@gmail.com>2013-04-17 15:29:12 -0400
commit1152e6591740765d2a1c261714ea9e409bf94cb5 (patch)
tree0b590419907b71e522c53260f00d90d81f4d6b50
parent6b72efa84768d08ed9a9a58f74a6195c4fafcdcd (diff)
downloadjquery-ui-1152e6591740765d2a1c261714ea9e409bf94cb5.tar.gz
jquery-ui-1152e6591740765d2a1c261714ea9e409bf94cb5.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
(cherry picked from commit 2de31fdbf498a6c20d196a96d007ea0f069644c5)
-rw-r--r--tests/unit/button/button_core.js24
-rw-r--r--ui/jquery.ui.button.js4
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 fcb7b14d1..e0e166a7b 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 ) {