@@ -73,6 +73,10 @@ $.widget( "ui.selectmenu", {
73
73
74
74
_drawButton : function ( ) {
75
75
var tabindex = this . element . attr ( 'tabindex' ) ;
76
+ var labelSelector = "label[for='" + this . element . attr ( "id" ) + "']" ;
77
+
78
+ // Find existing label
79
+ this . labelElement = $ ( labelSelector ) . uniqueId ( ) ;
76
80
77
81
// hide original select tag
78
82
this . element . hide ( ) ;
@@ -85,6 +89,7 @@ $.widget( "ui.selectmenu", {
85
89
id : this . ids . button ,
86
90
width : this . element . outerWidth ( ) ,
87
91
role : 'combobox' ,
92
+ 'aria-labelledby' : this . labelElement . attr ( "id" ) ,
88
93
'aria-expanded' : false ,
89
94
'aria-autocomplete' : 'list' ,
90
95
'aria-owns' : this . ids . menu ,
@@ -150,6 +155,10 @@ $.widget( "ui.selectmenu", {
150
155
}
151
156
}
152
157
that . focus = item . index ;
158
+
159
+ // Set ARIA active decendent
160
+ that . button . attr ( "aria-activedescendant" , item . element . uniqueId ( ) . attr ( "id" ) ) ;
161
+
153
162
} ,
154
163
// set ARIA role
155
164
role : 'listbox'
@@ -330,6 +339,9 @@ $.widget( "ui.selectmenu", {
330
339
this . _move ( "next" , event ) ;
331
340
}
332
341
break ;
342
+ case $ . ui . keyCode . SPACE :
343
+ this . _toggle ( event ) ;
344
+ break ;
333
345
case $ . ui . keyCode . LEFT :
334
346
this . _move ( "previous" , event ) ;
335
347
break ;
@@ -372,6 +384,7 @@ $.widget( "ui.selectmenu", {
372
384
// change ARIA attr
373
385
this . menuItems . find ( "a" ) . attr ( "aria-selected" , false ) ;
374
386
this . _getSelectedItem ( ) . find ( "a" ) . attr ( "aria-selected" , true ) ;
387
+ this . button . attr ( "aria-activedescendant" , item . element . uniqueId ( ) . attr ( "id" ) ) ;
375
388
} ,
376
389
377
390
_setOption : function ( key , value ) {
@@ -427,6 +440,7 @@ $.widget( "ui.selectmenu", {
427
440
this . menuWrap . remove ( ) ;
428
441
this . buttonWrap . remove ( ) ;
429
442
this . element . show ( ) ;
443
+ this . labelElement . removeUniqueId ( ) ;
430
444
}
431
445
} ) ;
432
446
0 commit comments