mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
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
This commit is contained in:
parent
fcbf4c0872
commit
fc093e9feb
8
ui/jquery.ui.autocomplete.js
vendored
8
ui/jquery.ui.autocomplete.js
vendored
@ -96,7 +96,6 @@ $.widget( "ui.autocomplete", {
|
|||||||
.bind( "blur.autocomplete", function( event ) {
|
.bind( "blur.autocomplete", function( event ) {
|
||||||
clearTimeout( self.searching );
|
clearTimeout( self.searching );
|
||||||
// clicks on the menu (or a button to trigger a search) will cause a blur event
|
// 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.closing = setTimeout(function() {
|
||||||
self.close( event );
|
self.close( event );
|
||||||
self._change( event );
|
self._change( event );
|
||||||
@ -109,6 +108,13 @@ $.widget( "ui.autocomplete", {
|
|||||||
this.menu = $( "<ul></ul>" )
|
this.menu = $( "<ul></ul>" )
|
||||||
.addClass( "ui-autocomplete" )
|
.addClass( "ui-autocomplete" )
|
||||||
.appendTo( "body", doc )
|
.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({
|
.menu({
|
||||||
focus: function( event, ui ) {
|
focus: function( event, ui ) {
|
||||||
var item = ui.item.data( "item.autocomplete" );
|
var item = ui.item.data( "item.autocomplete" );
|
||||||
|
Loading…
Reference in New Issue
Block a user