Permalink
Browse files

Autocomplete: Search if the user retypes the same value

Fixes #7434
Closes gh-1238
  • Loading branch information...
tjvantoll committed May 1, 2014
1 parent 5bbf276 commit 48001a8c46adc5d1d6c1726cecbe6453946e96e0
Showing with 28 additions and 2 deletions.
  1. +21 −0 tests/unit/autocomplete/autocomplete_core.js
  2. +7 −2 ui/autocomplete.js
@@ -338,4 +338,25 @@ test( ".replaceWith() (#9172)", function() {
equal( parent.html().toLowerCase(), replacement );
});
asyncTest( "Search if the user retypes the same value (#7434)", function() {
expect( 3 );
var element = $( "#autocomplete" ).autocomplete({
source: [ "java", "javascript" ],
delay: 0
}),
menu = element.autocomplete( "instance" ).menu.element;
element.val( "j" ).simulate( "keydown" );
setTimeout(function() {
ok( menu.is( ":visible" ), "menu displays initially" );
element.trigger( "blur" );
ok( !menu.is( ":visible" ), "menu hidden after blur" );
element.val( "j" ).simulate( "keydown" );
setTimeout(function() {
ok( menu.is( ":visible" ), "menu displays after typing the same value" );
start();
});
});
});
}( jQuery ) );
View
@@ -394,8 +394,13 @@ $.widget( "ui.autocomplete", {
_searchTimeout: function( event ) {
clearTimeout( this.searching );
this.searching = this._delay(function() {
// only search if the value has changed
if ( this.term !== this._value() ) {
// Search if the value has changed, or if the user retypes the same value (see #7434)
var equalValues = this.term === this._value(),
menuVisible = this.menu.element.is( ":visible" ),
modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
this.selectedItem = null;
this.search( null, event );
}

0 comments on commit 48001a8

Please sign in to comment.