diff options
-rw-r--r-- | tests/unit/selectmenu/selectmenu_core.js | 10 | ||||
-rw-r--r-- | tests/unit/selectmenu/selectmenu_events.js | 6 | ||||
-rw-r--r-- | ui/jquery.ui.selectmenu.js | 10 |
3 files changed, 17 insertions, 9 deletions
diff --git a/tests/unit/selectmenu/selectmenu_core.js b/tests/unit/selectmenu/selectmenu_core.js index 4fabdc15f..d9b37e234 100644 --- a/tests/unit/selectmenu/selectmenu_core.js +++ b/tests/unit/selectmenu/selectmenu_core.js @@ -8,8 +8,10 @@ test("accessibility", function () { menu = element.selectmenu("menuWidget").parent(), link = button.find("a"), selected = element.find("option:selected"), - ul = menu.children("ul"), - links = ul.find("li.ui-menu-item a"); + ul = menu.children("ul"); + + link.simulate( "focus" ); + var links = ul.find("li.ui-menu-item a"); expect(12 + links.length * 2); @@ -51,9 +53,11 @@ $.each([ menu = element.selectmenu("menuWidget").parent(), link = button.find("a"), ul = menu.children("ul"), - links = ul.find("li.ui-menu-item a"), selected = element.find("option:selected"); + link.simulate( "focus" ) + var links = ul.find("li.ui-menu-item a"); + link.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } ); equals( ul.attr("aria-activedescendant"), links.eq(element[0].selectedIndex).attr("id"), "after keydown menu aria-activedescendant" ); equals( links.eq(element[0].selectedIndex).attr("aria-selected"), "true", "after keydown selected menu link aria-selected" ); diff --git a/tests/unit/selectmenu/selectmenu_events.js b/tests/unit/selectmenu/selectmenu_events.js index dcc7c71c7..9e8629f5b 100644 --- a/tests/unit/selectmenu/selectmenu_events.js +++ b/tests/unit/selectmenu/selectmenu_events.js @@ -23,7 +23,7 @@ test("change", function () { menu = this.element.selectmenu("menuWidget").parent(), value = this.element.find("option").first().text(); - button.find("a").simulate( "click" ); + button.find("a").simulate( "focus" ).simulate( "click" ); menu.find("a").first().simulate( "mouseover" ).trigger( "click" ); }); @@ -63,7 +63,7 @@ test("focus", function () { var button = this.element.selectmenu("widget").parent(), menu = this.element.selectmenu("menuWidget").parent(); - button.find("a").simulate( "click" ); + button.find("a").simulate( "focus" ).simulate( "click" ); menu.find(".ui-menu-item").simulate("mouseover"); }); @@ -98,7 +98,7 @@ test("select", function () { var button = this.element.selectmenu("widget").parent(), menu = this.element.selectmenu("menuWidget").parent(); - button.find("a").simulate( "click" ); + button.find("a").simulate( "focus" ).simulate( "click" ); menu.find("a").first().simulate( "mouseover" ).trigger("click"); }); diff --git a/ui/jquery.ui.selectmenu.js b/ui/jquery.ui.selectmenu.js index 3e5f0816a..5dfd6af75 100644 --- a/ui/jquery.ui.selectmenu.js +++ b/ui/jquery.ui.selectmenu.js @@ -54,7 +54,6 @@ $.widget( "ui.selectmenu", { this._bind( this.button, this._buttonEvents ); this._drawMenu(); - this.refresh(); if ( this.options.disabled ) { this.disable(); @@ -70,7 +69,7 @@ $.widget( "ui.selectmenu", { // create button this.button = $( '<a />', { href: '#' + this.ids.id, - html: ' ', + html: this.element.find( "option:selected" ).text() || ' ', tabindex: ( tabindex ? tabindex : this.options.disabled ? -1 : 0 ), id: this.ids.button, width: this.element.outerWidth(), @@ -316,6 +315,11 @@ $.widget( "ui.selectmenu", { }, _buttonEvents: { + focus: function( event ) { + // init Menu on first focus + this.refresh(); + this.button.unbind( "focus." + this.widgetName ); + }, click: function( event ) { this._toggle( event ); event.preventDefault(); @@ -389,7 +393,7 @@ $.widget( "ui.selectmenu", { _setSelected: function( item ) { var link = this._getSelectedItem().find("a"); // update button text - this.button.button( "option", "label", item.label ); + this.button.find( "span.ui-button-text" ).html( item.label ); // change ARIA attr this.button.add( this.menu ).attr( "aria-activedescendant" , link.attr( "id" ) ); this.menuItems.find("a").attr( "aria-selected", false ); |