|
17 | 17 | $.widget( "ui.autocomplete", { |
18 | 18 | options: { |
19 | 19 | minLength: 1, |
20 | | - delay: 300 |
| 20 | + delay: 300, |
| 21 | + separator: /\s*,\s*/ |
21 | 22 | }, |
22 | 23 | _create: function() { |
23 | 24 | var self = this, |
@@ -121,14 +122,14 @@ $.widget( "ui.autocomplete", { |
121 | 122 | if ( false !== self._trigger( "focus", null, { item: item } ) ) { |
122 | 123 | // use value to match what will end up in the input, if it was a key event |
123 | 124 | if ( /^key/.test(event.originalEvent.type) ) { |
124 | | - self.element.val( item.value ); |
| 125 | + self.element.val( self.prefix + item.value ); |
125 | 126 | } |
126 | 127 | } |
127 | 128 | }, |
128 | 129 | selected: function( event, ui ) { |
129 | 130 | var item = ui.item.data( "item.autocomplete" ); |
130 | 131 | if ( false !== self._trigger( "select", event, { item: item } ) ) { |
131 | | - self.element.val( item.value ); |
| 132 | + self.element.val( self.prefix + item.value ); |
132 | 133 | } |
133 | 134 | self.close( event ); |
134 | 135 | // only trigger when focus was lost (click on menu) |
@@ -193,6 +194,13 @@ $.widget( "ui.autocomplete", { |
193 | 194 |
|
194 | 195 | search: function( value, event ) { |
195 | 196 | 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 | + } |
196 | 204 | if ( value.length < this.options.minLength ) { |
197 | 205 | return this.close( event ); |
198 | 206 | } |
|
0 commit comments