Используя JQuery Автозаполнение пользовательского интерфейса, более конкретно функцию CatComplete, я реализовал базовое поле c автозаполнения, например:
// This is the array used for searching:
splitTeamData = [
{category: 'people', label: 'John', value: 'RSKasich' },
{category: 'people', label: 'Kylian' value: 'RSMbappe'},
// ...
];
// This is JQuery UI's Autocomplete with categories:
$.widget( "custom.catcomplete", $.ui.autocomplete, {
_create: function() {
this._super();
this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" );
},
_renderMenu: function( ul, items ) {
let that = this,
currentCategory = "";
$.each(items, function( index, item ) {
let li;
if ( item.category !== currentCategory ) {
ul.append( "<li class='ui-autocomplete-category condensed-font'>" + item.category + "</li>" );
currentCategory = item.category;
}
li = that._renderItemData( ul, item );
if ( item.category ) {
li.attr( "aria-label", item.category + " : " + item.label );
}
});
},
_renderItem: function(ul, item){
return $('<li>').append("<div>" + item.value + "</div>").appendTo(ul);
}
});
// This is my search box:
$( "#team-search" ).catcomplete({
delay: 0,
source: splitTeamData,
focus: function(){
return false;
},
// Where I'm having problems:
search: function(value, target){
return 'RS' + value.delegateTarget.value
}
});
По сути, когда пользователь вводит Kasich
, используя Встроенная функция search
будет предшествовать RS
перед ней, ища RSKasich
вместо Kasich
Однако это не так, хотя JQuery Документация пользовательского интерфейса говорит, что это должен.