diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2015-10-26 13:13:42 -0400 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2015-10-27 10:28:04 -0400 |
commit | 39853fda45a409e9dc47d7358fbd9b03ad1d33b5 (patch) | |
tree | 6d27d571a5c59a38a10f7fbef5af5f3cdb5945a8 | |
parent | 4e13860067ab6809d260d486ac24d63b30cc664d (diff) | |
download | jquery-ui-39853fda45a409e9dc47d7358fbd9b03ad1d33b5.tar.gz jquery-ui-39853fda45a409e9dc47d7358fbd9b03ad1d33b5.zip |
Selectmenu: Handle form resets
Fixes #12236
Ref gh-1550
-rw-r--r-- | tests/unit/selectmenu/core.js | 18 | ||||
-rw-r--r-- | tests/unit/selectmenu/selectmenu.html | 4 | ||||
-rw-r--r-- | ui/widgets/selectmenu.js | 7 |
3 files changed, 25 insertions, 4 deletions
diff --git a/tests/unit/selectmenu/core.js b/tests/unit/selectmenu/core.js index 689668e70..1c1a6b622 100644 --- a/tests/unit/selectmenu/core.js +++ b/tests/unit/selectmenu/core.js @@ -329,4 +329,22 @@ $.each( [ } ); } ); + asyncTest( "Selectmenu should reset when its parent form resets", function() { + expect( 2 ); + + var element = $( "#speed" ).selectmenu(), + widget = element.selectmenu( "widget" ), + initialValue = element.val(), + form = element.closest( "form" ); + + element.val( "Slower" ); + element.selectmenu( "refresh" ); + equal( $.trim( widget.text() ), "Slower" ); + form[ 0 ].reset(); + setTimeout( function() { + equal( $.trim( widget.text() ), initialValue ); + start(); + } ); + } ); + } ); diff --git a/tests/unit/selectmenu/selectmenu.html b/tests/unit/selectmenu/selectmenu.html index 1df6e3ebc..be8b826c8 100644 --- a/tests/unit/selectmenu/selectmenu.html +++ b/tests/unit/selectmenu/selectmenu.html @@ -13,7 +13,7 @@ <div id="qunit-fixture"> <div id="selectmenu-wrap1" class="selectmenu-wrap"></div> - <div id="selectmenu-wrap2" class="selectmenu-wrap"> + <form id="selectmenu-wrap2" class="selectmenu-wrap"> <label for="speed">Select a speed:</label> <select name="speed" id="speed"> <option value="Slower">Slower</option> @@ -22,7 +22,7 @@ <option value="Fast">Fast</option> <option value="Faster">Faster</option> </select> - </div> + </form> <label for="number">Select a number:</label> <select name="number" id="number"> diff --git a/ui/widgets/selectmenu.js b/ui/widgets/selectmenu.js index a4e757be1..b251f04f1 100644 --- a/ui/widgets/selectmenu.js +++ b/ui/widgets/selectmenu.js @@ -24,6 +24,7 @@ "jquery", "./menu", "../escape-selector", + "../form-reset-mixin", "../keycode", "../labels", "../position", @@ -38,7 +39,7 @@ } }( function( $ ) { -return $.widget( "ui.selectmenu", { +return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { version: "@VERSION", defaultElement: "<select>", options: { @@ -76,6 +77,7 @@ return $.widget( "ui.selectmenu", { this._drawButton(); this._drawMenu(); + this._bindFormResetHandler(); this._rendered = false; this.menuItems = $(); @@ -675,12 +677,13 @@ return $.widget( "ui.selectmenu", { }, _destroy: function() { + this._unbindFormResetHandler(); this.menuWrap.remove(); this.button.remove(); this.element.show(); this.element.removeUniqueId(); this.labels.attr( "for", this.ids.element ); } -} ); +} ] ); } ) ); |