]> source.dussan.org Git - jquery-ui.git/commitdiff
Autocomplete: Prevent keypress events caused by enter key when selecting an item...
authorDmitry Petrov <dpetroff@gmail.com>
Wed, 6 Oct 2010 14:24:03 +0000 (10:24 -0400)
committerScott González <scott.gonzalez@gmail.com>
Wed, 6 Oct 2010 14:24:03 +0000 (10:24 -0400)
ui/jquery.ui.autocomplete.js

index 6c449237016a24fc75a7f824e41a3a329bdc1678..8b41a24dcaa4ecfc6edaa4068cefc7d2a6745441 100644 (file)
@@ -28,7 +28,9 @@ $.widget( "ui.autocomplete", {
        },
        _create: function() {
                var self = this,
-                       doc = this.element[ 0 ].ownerDocument;
+                       doc = this.element[ 0 ].ownerDocument,
+                       suppressKeyPress;
+
                this.element
                        .addClass( "ui-autocomplete-input" )
                        .attr( "autocomplete", "off" )
@@ -43,6 +45,7 @@ $.widget( "ui.autocomplete", {
                                        return;
                                }
 
+                               suppressKeyPress = false;
                                var keyCode = $.ui.keyCode;
                                switch( event.keyCode ) {
                                case keyCode.PAGE_UP:
@@ -65,6 +68,9 @@ $.widget( "ui.autocomplete", {
                                case keyCode.NUMPAD_ENTER:
                                        // when menu is open and has focus
                                        if ( self.menu.active ) {
+                                               // #6055 - Opera still allows the keypress to occur
+                                               // which causes forms to submit
+                                               suppressKeyPress = true;
                                                event.preventDefault();
                                        }
                                        //passthrough - ENTER and TAB both select the current element
@@ -91,6 +97,12 @@ $.widget( "ui.autocomplete", {
                                        break;
                                }
                        })
+                       .bind( "keypress.autocomplete", function( event ) {
+                               if ( suppressKeyPress ) {
+                                       suppressKeyPress = false;
+                                       event.preventDefault();
+                               }
+                       })
                        .bind( "focus.autocomplete", function() {
                                if ( self.options.disabled ) {
                                        return;