diff options
author | Scott González <scott.gonzalez@gmail.com> | 2016-11-16 12:52:15 -0500 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2016-11-16 12:52:15 -0500 |
commit | a2b25ef6caae3e1a272214839b815a6387618124 (patch) | |
tree | fe0b441544fcce9e597109bde89348e1f6256eb4 | |
parent | 9a4c0571577e20795c19796594747f0f8beb476a (diff) | |
download | jquery-ui-a2b25ef6caae3e1a272214839b815a6387618124.tar.gz jquery-ui-a2b25ef6caae3e1a272214839b815a6387618124.zip |
Selectmenu: Don't render options with the `hidden` attribute
Fixes #15098
-rw-r--r-- | tests/unit/selectmenu/core.js | 26 | ||||
-rw-r--r-- | ui/widgets/selectmenu.js | 4 |
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/unit/selectmenu/core.js b/tests/unit/selectmenu/core.js index a5bc68e0f..cef6dc5bf 100644 --- a/tests/unit/selectmenu/core.js +++ b/tests/unit/selectmenu/core.js @@ -376,4 +376,30 @@ QUnit.test( "Number pad input should change value", function( assert ) { } ); } ); +QUnit.test( "Options with hidden attribute should not be rendered", function( assert ) { + var ready = assert.async(); + assert.expect( 1 ); + + var button, menu, options, + element = $( "#speed" ); + + element.find( "option" ).eq( 1 ).prop( "hidden", true ); + element.selectmenu(); + button = element.selectmenu( "widget" ); + menu = element.selectmenu( "menuWidget" ); + + button.simulate( "focus" ); + setTimeout( function() { + button.trigger( "click" ); + options = menu.children() + .map( function() { + return $( this ).text(); + } ) + .get(); + assert.deepEqual( options, [ "Slower", "Medium", "Fast", "Faster" ], "correct elements" ); + + ready(); + } ); +} ); + } ); diff --git a/ui/widgets/selectmenu.js b/ui/widgets/selectmenu.js index 900a245f7..52139f73e 100644 --- a/ui/widgets/selectmenu.js +++ b/ui/widgets/selectmenu.js @@ -656,6 +656,10 @@ return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, { var that = this, data = []; options.each( function( index, item ) { + if ( item.hidden ) { + return; + } + data.push( that._parseOption( $( item ), index ) ); } ); this.items = data; |