Skip to content

Commit 605a20e

Browse files
Yermoscottgonzalez
authored andcommitted
Autocomplete: Do not set value on multi-line input
This fixes an issue where contenteditable text was getting overwritten when wrapping past the bottom or top of the autocomplete menu. Fixes #9771 Closes jquerygh-1184
1 parent ccb1324 commit 605a20e

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

tests/unit/autocomplete/autocomplete_core.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,32 @@ test( "allow form submit on enter when menu is not active", function() {
163163
}
164164
})();
165165

166+
asyncTest( "past end of menu in multiline autocomplete", function() {
167+
expect( 2 );
168+
169+
var customVal = "custom value",
170+
element = $( "#autocomplete-contenteditable" ).autocomplete({
171+
delay: 0,
172+
source: [ "javascript" ],
173+
focus: function( event, ui ) {
174+
equal( ui.item.value, "javascript", "Item gained focus" );
175+
$( this ).text( customVal );
176+
event.preventDefault();
177+
}
178+
});
179+
180+
element
181+
.simulate( "focus" )
182+
.autocomplete( "search", "ja" );
183+
184+
setTimeout(function() {
185+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
186+
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
187+
equal( element.text(), customVal );
188+
start();
189+
}, 50 );
190+
});
191+
166192
asyncTest( "handle race condition", function() {
167193
expect( 3 );
168194
var count = 0,

ui/autocomplete.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,11 @@ $.widget( "ui.autocomplete", {
545545
}
546546
if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
547547
this.menu.isLastItem() && /^next/.test( direction ) ) {
548-
this._value( this.term );
548+
549+
if ( !this.isMultiLine ) {
550+
this._value( this.term );
551+
}
552+
549553
this.menu.blur();
550554
return;
551555
}

0 commit comments

Comments
 (0)