aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/unit/selectmenu/selectmenu_core.js10
-rw-r--r--tests/unit/selectmenu/selectmenu_events.js6
-rw-r--r--ui/jquery.ui.selectmenu.js10
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: '&nbsp;',
+ html: this.element.find( "option:selected" ).text() || '&nbsp;',
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 );