Skip to content

Commit 6b6b49f

Browse files
committed
Menu: Maintain focus on already selected item during typeahead
Fixes #10644 Closes gh-1354
1 parent e3e5a9f commit 6b6b49f

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

tests/unit/menu/menu_events.js

+22
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,28 @@ asyncTest( "handle keyboard navigation with spelling of menu items", function()
629629
element[ 0 ].focus();
630630
});
631631

632+
asyncTest( "Keep focus on selected item (see #10644)", function() {
633+
expect( 1 );
634+
var element = $( "#menu2" ).menu({
635+
focus: function( event ) {
636+
log( $( event.target ).find( ".ui-state-focus" ).index() );
637+
}
638+
});
639+
640+
log( "keydown", true );
641+
element.one( "menufocus", function() {
642+
element.simulate( "keydown", { keyCode: 65 } );
643+
element.simulate( "keydown", { keyCode: 68 } );
644+
element.simulate( "keydown", { keyCode: 68 } );
645+
element.simulate( "keydown", { keyCode: 89 } );
646+
element.simulate( "keydown", { keyCode: 83 } );
647+
equal( logOutput(), "keydown,0,1,3,3,3",
648+
"Focus stays on 'Addyston', even after other options are eliminated" );
649+
start();
650+
});
651+
element[ 0 ].focus();
652+
});
653+
632654
test( "#9469: Stopping propagation in a select event should not suppress subsequent select events.", function() {
633655
expect( 1 );
634656
var element = $( "#menu1" ).menu({

ui/menu.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ return $.widget( "ui.menu", {
251251

252252
if ( match.length ) {
253253
this.focus( event, match );
254-
if ( match.length > 1 ) {
254+
if ( match.length > 0 ) {
255255
this.previousFilter = character;
256256
this.filterTimer = this._delay(function() {
257257
delete this.previousFilter;

0 commit comments

Comments
 (0)