A typeahead component for inputs. Get it on GitHub.
<script> var input = document.querySelector('input'); var data = [ 'Roy Eldridge', 'Roy Hargrove', 'Tim Hagans', 'Tom Harrell', 'Freddie Hubbard', 'Nicholas Payton', 'Miles Davis', 'Dizzy Gillespie', 'Rex Stewart' ]; new Suggestions(input, data); </script>
Pass an array of objects as data & target a specific property by overriding `getItemValue`. Add pass `minLength`, `limit` & `hideOnBlur` options on initialization.
<script> var input = document.querySelector('input'); var data = [{ name: 'Roy Eldridge', year: 1911 }, { name: 'Roy Hargrove', year: 1969 }, { name: 'Tim Hagans', year: 1954 }, { name: 'Tom Harrell', year: 1946 }, { name: 'Freddie Hubbard', year: 1938 }, { name: 'Nicholas Payton', year: 1973 }, { name: 'Miles Davis', year: 1926 }, { name: 'Dizzy Gillespie', year: 1917 }, { name: 'Rex Stewart', year: 1907 }]; var typeahead = new Suggestions(input, data, { minLength: 3, // Number of characters typed into an input to trigger suggestions. limit: 3, // Max number of results to display. hideOnBlur: false // Don't hide results when input loses focus }); typeahead.getItemValue = function(item) { return item.name }; input.addEventListener('change', function() { console.log(typeahead.selected); // Current selected item. }); </script>
<script> var input = document.querySelector('input'); var data = [ 'Roy Eldridge', 'Roy Hargrove', 'Tim Hagans', 'Tom Harrell', 'Freddie Hubbard', 'Nicholas Payton', 'Miles Davis', 'Dizzy Gillespie', 'Rex Stewart' ]; new Suggestions(input, data, { filter: false }); </script>
<script> var input = document.querySelector('input'); var data = [{ name: 'Roy Eldridge', year: 1911 }, { name: 'Roy Hargrove', year: 1969 }, { name: 'Tim Hagans', year: 1954 }, { name: 'Tom Harrell', year: 1946 }, { name: 'Freddie Hubbard', year: 1938 }, { name: 'Nicholas Payton', year: 1973 }, { name: 'Miles Davis', year: 1926 }, { name: 'Dizzy Gillespie', year: 1917 }, { name: 'Rex Stewart', year: 1907 }]; var customRenderSuggestion = new Suggestions(inputCustomRender, objectData, { render: function(item){ return "${item.name} (${item.year})" }, getItemValue: function(item){ return item.name } }); </script>