]> source.dussan.org Git - jquery-ui.git/commitdiff
Autocomplete: Only prevent the default action for enter when a menu item is active...
authorScott González <scott.gonzalez@gmail.com>
Mon, 27 Sep 2010 14:10:00 +0000 (10:10 -0400)
committerScott González <scott.gonzalez@gmail.com>
Mon, 27 Sep 2010 14:10:00 +0000 (10:10 -0400)
Thanks Ján Suchal.

tests/unit/autocomplete/autocomplete_core.js
ui/jquery.ui.autocomplete.js

index 9b8709abb6ad324fe29e71e3d6f612b9a96ac8b2..fcd835d1ac12572e98283e50b0a597ae34d45e40 100644 (file)
@@ -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);
index 680a81f29326cdbe24d6b78c0250dc921fd8e633..2d1d7f94b73ed1778a851d811d29ab0d53fc376d 100644 (file)
@@ -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