После поиска источника автозаполнения у вас есть несколько вариантов. Вы можете написать свой собственный метод pasrer, который возвращает то, что вам нужно, и установить его в качестве источника обратного вызова. Это, вероятно, более «правильный» способ сделать это.
Более быстрый способ - просто добавить следующую строку ПОСЛЕ включения источника пользовательского интерфейса:
$.ui.autocomplete.escapeRegex=function(){
return '[^|\s]' + $value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};
Если вам интересно, как это работает (или должно работать, я не проверял):
Исходный код расширяет ui.autocomplete двумя статическими функциями:
$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
},
filter: function(array, term) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
return $.grep( array, function(value) {
return matcher.test( value.label || value.value || value );
});
}
});
Все, что вам нужно сделать, это изменить то, что escapeRegex возвращает для поиска начала, если только слова. Устанавливая значение escapeRegex для возврата '[^|\s]'
перед исходным возвратом, мы говорим: «Ищите работу с пробелом перед или в начале строки»