Small Autocomplete/Fuzzy Search Plugin - jQuery Tiny Autocomplete
File Size: | 216 KB |
---|---|
Views Total: | 3544 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

A small, fast, configurable, mobile-compatible jQuery autocomplete plugin with fuzzy search support that works with both local and external data sources.
More features:
- Highlights matched strings.
- Custom query method.
- Allows to specify max results to show.
- Close on select.
- Custom HTML templates.
- Works with JavaScript/JSON objects.
- Grouped items are supported as well.
How to use it:
1. Load the jQuery library, tiny-autocomplete.css
, and tiny-autocomplete.js
files in the HTML.
<link rel="stylesheet" href="/path/to/tiny-autocomplete.css"> <script src="/path/to/jquery.min.js"></script> <script src="/path/to/tiny-autocomplete.js"></script>
2. Create a container element next to the autocomplete input that will be used to hold the selected item.
<input id="autocomplete" type="text" name="autocomplete"> <div class="results"></div>
3. Prepare your data as follows:
// local var birds = [ {"title":"Southern Screamer", "id":1}, {"title":"Horned Screamer", "id":2}, {"title":"Magpie-goose", "id":3} ] // data.json [ {"title":"Southern Screamer", "id":1}, {"title":"Horned Screamer", "id":2}, {"title":"Magpie-goose", "id":3}, {"title":"Swan Goose", "id":4}, {"title": "Blåmes", "id":5} ] // grouped data [ { "title": "Larks", "data": [ {"id":1, "title": "Clapper Lark", "url":"http://tiny-autocomplete.hal.se/larks/1"}, {"id":2, "title": "Spike-heeled Lark", "url":"http://tiny-autocomplete.hal.se/larks/2"}, {"id":3, "title": "Greater Hoopoe-lark", "url":"http://tiny-autocomplete.hal.se/larks/3"}, {"id":4, "title": "Calandra Lark", "url":"http://tiny-autocomplete.hal.se/larks/4"} ] }, { "title": "Wrens", "template": "<li class='autocomplete-item'>{{title}}<br />(sound: {{sound}})</li>", "data": [ {"id":1, "title":"Cactus Wren", "sound":"warbling"}, {"id":2, "title":"Rock Wren", "sound":"shouting"}, {"id":3, "title":"Sedge Wren", "sound":"screaming"}, {"id":4, "title":"Carolina Wren", "sound":"tweeting"} ] } ]
4. Initialize the autocomplete plugin on the input field and specify the data source you want to use.
// local $('#autocomplete').tinyAutocomplete({ data: birds }) // external $('#autocomplete').tinyAutocomplete({ url: '/path/to/birds.json' }) // grouped $('#autocomplete').tinyAutocomplete({ url: '/path/to/grouped.json', grouped: true })
5. Default options to customize the autocomplete:
$('#autocomplete').tinyAutocomplete({ // min characters to trigger the autocomplete minChars: 2, // highlights the matched strings markAsBold: true, // whether or not Tiny Autocomplete should render the JSON as a grouped list. grouped: false, // query proerty queryProperty: 'q', // query parameters queryParameters: {}, // query method method: 'get', // scrolls the input field to the top // great for mobile device scrollOnFocus: 'auto', // max number of results to show maxItems: 100, maxItemsOnMobile: 3, // limit the number of items displayed when the screen width is smaller than the mobileWidth setting mobileWidth: 700, // keyboard delay keyboardDelay: 300, // closes the dropdown on select closeOnSelect: true, // custom templates lastItemTemplate: null, groupTemplate: '<li class="autocomplete-group"><span class="autocomplete-group-header">{{title}}</span><ul class="autocomplete-items" /></li>', itemTemplate: '<li class="autocomplete-item">{{title}}</li>', noResultsTemplate: '<li class="autocomplete-item">No results for {{title}}</li>', // shows no results showNoResults: false, // where to put the group's items groupContentName: '.autocomplete-items', // class(es) for the autocomplete dropdown wrapClasses: "autocomplete" })
6. Fire an event after received data.
$('#autocomplete').tinyAutocomplete() .on('receivedata', function(ev, tinyAutocomplete, json) { tinyAutocomplete.json = json.stuff.data; });
Changelog:
2020-09-09
- v1.1.1
2019-10-25
- Adds maxItemsOnMobile config
- Makes mobileWidth configurable
This awesome jQuery plugin is developed by varvet. For more Advanced Usages, please check the demo page or visit the official website.