Skip to content

Commit 697f92f

Browse files
committed
Autocomplete: add separator option. Fixed #5729 - Separator support for
jquery.ui.autocomplete / complete only part of input
1 parent 9241757 commit 697f92f

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

ui/jquery.ui.autocomplete.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
$.widget( "ui.autocomplete", {
1818
options: {
1919
minLength: 1,
20-
delay: 300
20+
delay: 300,
21+
separator: /\s*,\s*/
2122
},
2223
_create: function() {
2324
var self = this,
@@ -121,14 +122,14 @@ $.widget( "ui.autocomplete", {
121122
if ( false !== self._trigger( "focus", null, { item: item } ) ) {
122123
// use value to match what will end up in the input, if it was a key event
123124
if ( /^key/.test(event.originalEvent.type) ) {
124-
self.element.val( item.value );
125+
self.element.val( self.prefix + item.value );
125126
}
126127
}
127128
},
128129
selected: function( event, ui ) {
129130
var item = ui.item.data( "item.autocomplete" );
130131
if ( false !== self._trigger( "select", event, { item: item } ) ) {
131-
self.element.val( item.value );
132+
self.element.val( self.prefix + item.value );
132133
}
133134
self.close( event );
134135
// only trigger when focus was lost (click on menu)
@@ -193,6 +194,13 @@ $.widget( "ui.autocomplete", {
193194

194195
search: function( value, event ) {
195196
value = value != null ? value : this.element.val();
197+
if ( this.options.separator ) {
198+
var s = value.split(this.options.separator);
199+
this.prefix = value.substring(0, value.length-s.slice(-1)[0].length);
200+
value = s.pop()
201+
} else {
202+
this.prefix = "";
203+
}
196204
if ( value.length < this.options.minLength ) {
197205
return this.close( event );
198206
}

0 commit comments

Comments
 (0)