Skip to content

Commit adcafce

Browse files
committed
Autocomplete: Only prevent the default action for enter when a menu item is active. Fixes #6038 - Autocomplete: Allow default behaviour on enter when menu is open but inactive.
Thanks Ján Suchal.
1 parent dda7bcb commit adcafce

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

tests/unit/autocomplete/autocomplete_core.js

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ test("close-on-blur is properly delayed", function() {
2323
same( $(".ui-menu:visible").length, 0 );
2424
start();
2525
}, 200);
26-
})
26+
});
2727

2828
test("close-on-blur is cancelled when starting a search", function() {
2929
var ac = $("#autocomplete").autocomplete({
@@ -38,6 +38,35 @@ test("close-on-blur is cancelled when starting a search", function() {
3838
same( $(".ui-menu:visible").length, 1 );
3939
start();
4040
}, 200);
41-
})
41+
});
42+
43+
test( "prevent form submit on enter when menu is active", function() {
44+
var event;
45+
var ac = $( "#autocomplete" ).autocomplete({
46+
source: [ "java", "javascript" ]
47+
}).val( "ja" ).autocomplete( "search" );
48+
49+
event = $.Event( "keydown" );
50+
event.keyCode = $.ui.keyCode.DOWN;
51+
ac.trigger( event );
52+
same( $( ".ui-menu-item:has(.ui-state-hover)" ).length, 1, "menu item is active" );
53+
54+
event = $.Event( "keydown" );
55+
event.keyCode = $.ui.keyCode.ENTER;
56+
ac.trigger( event );
57+
ok( event.isDefaultPrevented(), "default action is prevented" );
58+
});
59+
60+
test( "allow form submit on enter when menu is not active", function() {
61+
var event;
62+
var ac = $( "#autocomplete" ).autocomplete({
63+
source: [ "java", "javascript" ]
64+
}).val( "ja" ).autocomplete( "search" );
65+
66+
event = $.Event( "keydown" );
67+
event.keyCode = $.ui.keyCode.ENTER;
68+
ac.trigger( event );
69+
ok( !event.isDefaultPrevented(), "default action is prevented" );
70+
});
4271

4372
})(jQuery);

ui/jquery.ui.autocomplete.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ $.widget( "ui.autocomplete", {
6363
break;
6464
case keyCode.ENTER:
6565
case keyCode.NUMPAD_ENTER:
66-
// when menu is open or has focus
67-
if ( self.menu.element.is( ":visible" ) ) {
66+
// when menu is open and has focus
67+
if ( self.menu.active ) {
6868
event.preventDefault();
6969
}
7070
//passthrough - ENTER and TAB both select the current element

0 commit comments

Comments
 (0)