Skip to content

Commit 6e21074

Browse files
committed
improved: keyboard control and focus / hover handling, thx to @trollix & @netcelli, see fnagel#122 & fnagel#205
1 parent 18d9a37 commit 6e21074

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

ui/jquery.ui.selectmenu.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,14 @@ $.widget("ui.selectmenu", {
132132
case $.ui.keyCode.TAB:
133133
ret = true;
134134
break;
135+
case $.ui.keyCode.PAGE_UP:
135136
case $.ui.keyCode.HOME:
136137
self.index(0);
137138
break;
139+
case $.ui.keyCode.PAGE_DOWN:
140+
case $.ui.keyCode.END:
141+
self.index(self._optionLis.length);
142+
break;
138143
default:
139144
ret = true;
140145
}
@@ -146,15 +151,17 @@ $.widget("ui.selectmenu", {
146151
}
147152
return true;
148153
})
149-
.bind('mouseover.selectmenu focus.selectmenu', function() {
150-
if (!o.disabled) {
151-
$(this).addClass(self.widgetBaseClass + '-focus ui-state-hover');
152-
}
154+
.bind('mouseover.selectmenu', function() {
155+
if (!o.disabled) $(this).addClass('ui-state-hover');
153156
})
154-
.bind('mouseout.selectmenu blur.selectmenu', function() {
155-
if (!o.disabled) {
156-
$(this).removeClass(self.widgetBaseClass + '-focus ui-state-hover');
157-
}
157+
.bind('mouseout.selectmenu', function() {
158+
if (!o.disabled) $(this).removeClass('ui-state-hover');
159+
})
160+
.bind('focus.selectmenu', function() {
161+
if (!o.disabled) $(this).addClass('ui-state-focus');
162+
})
163+
.bind('blur.selectmenu', function() {
164+
if (!o.disabled) $(this).removeClass('ui-state-focus');
158165
});
159166

160167
// document click closes menu
@@ -437,6 +444,9 @@ $.widget("ui.selectmenu", {
437444

438445
// update value
439446
this.index( this._selectedIndex() );
447+
448+
// set selected item so movefocus has intial state
449+
this._selectedOptionLi().addClass(this.widgetBaseClass + '-item-focus');
440450

441451
// needed when selectmenu is placed at the very bottom / top of the page
442452
window.setTimeout( function() {
@@ -665,7 +675,7 @@ $.widget("ui.selectmenu", {
665675
(amt > 0) ? ++amt : --amt;
666676
this._moveSelection(amt, newIndex);
667677
} else {
668-
return this._optionLis.eq(newIndex).trigger('mouseup');
678+
this._optionLis.eq(newIndex).trigger('mouseover').trigger('mouseup');
669679
}
670680
}
671681
},

0 commit comments

Comments
 (0)