jQuery Custom Autocomplete with two columns
How to create 2 columns autocomplete.
This is a little bit non w3c compilant, but it works fine:)
<style>
.resultBox{ float: left; width: 50%!important;}
</style>
<input type="text" id="search-box">
The ideea is to add two divs inside the results ul and render each result in the proper div
$.widget( "custom.twocolumnsautocomplete", $.ui.autocomplete, {
_renderMenu: function( ul, items ) {
var that = this,
currentCategory = "";
ul.addClass('searchAutocomplete');
// insert columns for the 2 categories: artists and songs
ul.append('<div class="cat1 resultBox"><li>Category1</li></div>');
ul.append('<div class="cat2 resultBox"><li>Category2</li></div>');
$.each( items, function( index, item ) {
// render li items for each category
that._renderItem( ul.find('.'+ item.category ), item );
});
}
});
var data = [
{label: 'AAA', value: 'aaa', category: 'cat1'},
{label: 'ABB', value: 'abb', category: 'cat2'}
];
$('#search-box').twocolumnsautocomplete({
source: data
});
Demo http://jsfiddle.net/ovi_mihai/Ybjq4/7/
For ajax data, please make sure the category ends up in your autocomplete return.
[EDIT] It seems there is a problem with the selection of items this doesn’t work as expected, it only looks good.