Copied!
content_copy
<div class="row">
<div class="col s12">
<div class="row">
<div class="input-field col s12">
<i class="material-icons prefix">textsms</i>
<input type="text" id="autocomplete-input" class="autocomplete">
<label for="autocomplete-input">Autocomplete</label>
</div>
</div>
</div>
</div>
Initialization
The data is a json object where the key is the matching string and the value is an optional image url.
The key must be a text string. If you trust your data, or have properly sanitized your user input, you may
use HTML by setting the option allowUnsafeHTML: true
.
Copied!
content_copy
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.autocomplete');
var instances = M.Autocomplete.init(elems, {
// specify options here
data: {
"Apple": null,
"Microsoft": null,
"Google": 'https://placehold.it/250x250'
}
});
});
// Or with jQuery
$(document).ready(function(){
$('input.autocomplete').autocomplete({
// specify options here
data: {
"Apple": null,
"Microsoft": null,
"Google": 'https://placehold.it/250x250'
},
});
});
Options
Name | Type | Default | Description |
---|---|---|---|
data | Object | {} | Data object defining autocomplete options with optional icon strings. |
limit | Number | Infinity | Limit of results the autocomplete shows. |
onAutocomplete | Function | null | Callback for when autocompleted. |
minLength | Number | 1 | Minimum number of characters before autocomplete starts. |
sortFunction | Function | Sort function that defines the order of the list of autocomplete options. | |
allowUnsafeHTML | Boolean | false | If true will render the key from each item directly as HTML. User input MUST be properly sanitized first. |
dropdownOptions | Object | {} | Pass options object to select dropdown initialization. |
sortFunction
This is the default compareFunction. You can write your own compareFunction by passing in a function with these same 3 parameters. You can read more about how a compareFunction works here.
Copied!
content_copy
// Sort function for sorting autocomplete results
function (a, b, inputString) {
return a.indexOf(inputString) - b.indexOf(inputString);
}
To disable sorting and use the values as they appear in the data object, use a falsy value.
Methods
Because jQuery is no longer a dependency, all the methods are called on the plugin instance. You can get the plugin instance like this:
Copied! content_copyvar instance = M.Autocomplete.getInstance(elem); /* jQuery Method Calls You can still use the old jQuery plugin method calls. But you won't be able to access instance properties. $('.autocomplete').autocomplete('methodName'); $('.autocomplete').autocomplete('methodName', paramName); */
.open();
Open autocomplete dropdown.
instance.open();
.close();
Close autocomplete dropdown.
instance.close();
.selectOption();
Select a specific autocomplete options.
Arguments
Element: Element of the autocomplete option.
instance.selectOption(el);
.updateData();
Update autocomplete options data.
Arguments
Object: Autocomplete options data object.
instance.updateData({
"Apple": null,
"Microsoft": null,
"Google": 'https://placehold.it/250x250'
});
.destroy();
Destroy plugin instance and teardown
instance.destroy();
Properties
Name | Type | Description |
---|---|---|
el | Element | The DOM element the plugin was initialized with. |
options | Object | The options the instance was initialized with. |
isOpen | Boolean | If the autocomplete is open. |
count | Number | Number of matching autocomplete options. |
activeIndex | Integer | Index of the current selected option. |
dropdown | Dropdown | Instance of the dropdown plugin for this autocomplete. |