aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2010-09-27 10:10:00 -0400
committerScott González <scott.gonzalez@gmail.com>2010-09-27 10:10:00 -0400
commitadcafce7a24156c503061eb354867e41064fd89f (patch)
treebcb0a933335f118161da3fe9589e54af5c51e5b4
parentdda7bcb6383ed0fee9dcd1ae5f0a6e1dcc160c6b (diff)
downloadjquery-ui-adcafce7a24156c503061eb354867e41064fd89f.tar.gz
jquery-ui-adcafce7a24156c503061eb354867e41064fd89f.zip
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.
-rw-r--r--tests/unit/autocomplete/autocomplete_core.js33
-rw-r--r--ui/jquery.ui.autocomplete.js4
2 files changed, 33 insertions, 4 deletions
diff --git a/tests/unit/autocomplete/autocomplete_core.js b/tests/unit/autocomplete/autocomplete_core.js
index 9b8709abb..fcd835d1a 100644
--- a/tests/unit/autocomplete/autocomplete_core.js
+++ b/tests/unit/autocomplete/autocomplete_core.js
@@ -23,7 +23,7 @@ test("close-on-blur is properly delayed", function() {
same( $(".ui-menu:visible").length, 0 );
start();
}, 200);
-})
+});
test("close-on-blur is cancelled when starting a search", function() {
var ac = $("#autocomplete").autocomplete({
@@ -38,6 +38,35 @@ test("close-on-blur is cancelled when starting a search", function() {
same( $(".ui-menu:visible").length, 1 );
start();
}, 200);
-})
+});
+
+test( "prevent form submit on enter when menu is active", function() {
+ var event;
+ var ac = $( "#autocomplete" ).autocomplete({
+ source: [ "java", "javascript" ]
+ }).val( "ja" ).autocomplete( "search" );
+
+ event = $.Event( "keydown" );
+ event.keyCode = $.ui.keyCode.DOWN;
+ ac.trigger( event );
+ same( $( ".ui-menu-item:has(.ui-state-hover)" ).length, 1, "menu item is active" );
+
+ event = $.Event( "keydown" );
+ event.keyCode = $.ui.keyCode.ENTER;
+ ac.trigger( event );
+ ok( event.isDefaultPrevented(), "default action is prevented" );
+});
+
+test( "allow form submit on enter when menu is not active", function() {
+ var event;
+ var ac = $( "#autocomplete" ).autocomplete({
+ source: [ "java", "javascript" ]
+ }).val( "ja" ).autocomplete( "search" );
+
+ event = $.Event( "keydown" );
+ event.keyCode = $.ui.keyCode.ENTER;
+ ac.trigger( event );
+ ok( !event.isDefaultPrevented(), "default action is prevented" );
+});
})(jQuery);
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index 680a81f29..2d1d7f94b 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -63,8 +63,8 @@ $.widget( "ui.autocomplete", {
break;
case keyCode.ENTER:
case keyCode.NUMPAD_ENTER:
- // when menu is open or has focus
- if ( self.menu.element.is( ":visible" ) ) {
+ // when menu is open and has focus
+ if ( self.menu.active ) {
event.preventDefault();
}
//passthrough - ENTER and TAB both select the current element