mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Autocomplete: Making sure we do not show search menu after a blur. Fixed #7423 - Tab out of autocomplete with remote source can leave menu showing.
This commit is contained in:
parent
54fb1441fe
commit
2445e20a85
@ -157,6 +157,25 @@ asyncTest( "cancel select", function() {
|
|||||||
}, 50 );
|
}, 50 );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
asyncTest( "blur during remote search", function() {
|
||||||
|
expect( 1 );
|
||||||
|
var ac = $( "#autocomplete" ).autocomplete({
|
||||||
|
delay: 0,
|
||||||
|
source: function( request, response ) {
|
||||||
|
ok( true, "trigger request" );
|
||||||
|
ac.simulate( "blur" );
|
||||||
|
setTimeout(function() {
|
||||||
|
response([ "result" ]);
|
||||||
|
start();
|
||||||
|
}, 100 );
|
||||||
|
},
|
||||||
|
open: function() {
|
||||||
|
ok( false, "opened after a blur" );
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ac.val( "ro" ).keydown();
|
||||||
|
});
|
||||||
|
|
||||||
/* TODO previous fix broke more than it fixed, disabling this for now - messed up regular menu select event
|
/* TODO previous fix broke more than it fixed, disabling this for now - messed up regular menu select event
|
||||||
test("blur without selection", function() {
|
test("blur without selection", function() {
|
||||||
expect(1);
|
expect(1);
|
||||||
|
4
ui/jquery.ui.autocomplete.js
vendored
4
ui/jquery.ui.autocomplete.js
vendored
@ -184,6 +184,7 @@ $.widget( "ui.autocomplete", {
|
|||||||
}
|
}
|
||||||
|
|
||||||
clearTimeout( self.searching );
|
clearTimeout( self.searching );
|
||||||
|
self.cancelSearch = true;
|
||||||
// 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
|
||||||
self.closing = setTimeout(function() {
|
self.closing = setTimeout(function() {
|
||||||
self.close( event );
|
self.close( event );
|
||||||
@ -373,6 +374,7 @@ $.widget( "ui.autocomplete", {
|
|||||||
_search: function( value ) {
|
_search: function( value ) {
|
||||||
this.pending++;
|
this.pending++;
|
||||||
this.element.addClass( "ui-autocomplete-loading" );
|
this.element.addClass( "ui-autocomplete-loading" );
|
||||||
|
this.cancelSearch = false;
|
||||||
|
|
||||||
this.source( { term: value }, this.response );
|
this.source( { term: value }, this.response );
|
||||||
},
|
},
|
||||||
@ -382,7 +384,7 @@ $.widget( "ui.autocomplete", {
|
|||||||
content = this._normalize( content );
|
content = this._normalize( content );
|
||||||
}
|
}
|
||||||
this._trigger( "response", null, { content: content } );
|
this._trigger( "response", null, { content: content } );
|
||||||
if ( !this.options.disabled && content && content.length ) {
|
if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
|
||||||
this._suggest( content );
|
this._suggest( content );
|
||||||
this._trigger( "open" );
|
this._trigger( "open" );
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user