Permalink
Browse files

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 gh-1184
  • Loading branch information...
Yermo authored and scottgonzalez committed Jan 25, 2014
1 parent ccb1324 commit 605a20ef06b0bae2d2ffd8d96e49c2a297add80a
Showing with 31 additions and 1 deletion.
  1. +26 −0 tests/unit/autocomplete/autocomplete_core.js
  2. +5 −1 ui/autocomplete.js
@@ -163,6 +163,32 @@ test( "allow form submit on enter when menu is not active", function() {
}
})();
asyncTest( "past end of menu in multiline autocomplete", function() {
expect( 2 );
var customVal = "custom value",
element = $( "#autocomplete-contenteditable" ).autocomplete({
delay: 0,
source: [ "javascript" ],
focus: function( event, ui ) {
equal( ui.item.value, "javascript", "Item gained focus" );
$( this ).text( customVal );
event.preventDefault();
}
});
element
.simulate( "focus" )
.autocomplete( "search", "ja" );
setTimeout(function() {
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
element.simulate( "keydown", { keyCode: $.ui.keyCode.DOWN } );
equal( element.text(), customVal );
start();
}, 50 );
});
asyncTest( "handle race condition", function() {
expect( 3 );
var count = 0,
View
@@ -545,7 +545,11 @@ $.widget( "ui.autocomplete", {
}
if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
this.menu.isLastItem() && /^next/.test( direction ) ) {
this._value( this.term );
if ( !this.isMultiLine ) {
this._value( this.term );
}
this.menu.blur();
return;
}

0 comments on commit 605a20e

Please sign in to comment.