From: jzaefferer Date: Tue, 18 May 2010 12:57:02 +0000 (+0200) Subject: Prevent autocomplete-menu from closing when clicking 'slowly', eg. a long mousedown... X-Git-Tag: 1.8.2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=fc093e9feb4450b1ab93e3da9a2f7abb1d4335b5;p=jquery-ui.git Prevent autocomplete-menu from closing when clicking 'slowly', eg. a long mousedown. Fix for #5405 - Autocomplete: select event not triggered when mousedown duration > blur timeout --- diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index 64c098aa0..bd7420df8 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -96,7 +96,6 @@ $.widget( "ui.autocomplete", { .bind( "blur.autocomplete", function( event ) { clearTimeout( self.searching ); // clicks on the menu (or a button to trigger a search) will cause a blur event - // TODO try to implement this without a timeout, see clearTimeout in search() self.closing = setTimeout(function() { self.close( event ); self._change( event ); @@ -109,6 +108,13 @@ $.widget( "ui.autocomplete", { this.menu = $( "" ) .addClass( "ui-autocomplete" ) .appendTo( "body", doc ) + // prevent the close-on-blur in case of a "slow" click on the menu (long mousedown) + .mousedown(function() { + // use another timeout to make sure the blur-event-handler on the input was already triggered + setTimeout(function() { + clearTimeout( self.closing ); + }, 13); + }) .menu({ focus: function( event, ui ) { var item = ui.item.data( "item.autocomplete" );