I use autocomplete typeahead twitter Looking for how to make or add the ability to search for keywords

so that when you enter google or pschppddu Google

var stocksData = [ { "company_name": "Facebook", "code": "fb", }, { "company_name": "Google", "code": "goog", }, { "company_name": "Yahoo", "code": "yhoo", }, { "company_name": "Apple", "code": "aapl", }, { "company_name": "Royal Mail", "code": "rmg.l", }, ]; var stocks = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('company_name'), queryTokenizer: Bloodhound.tokenizers.whitespace, local: stocksData }); function getStocks(q, sync) { if (q === '') { sync(stocks.all()); } else { stocks.search(q, sync); } } $('.typeahead').typeahead({ minLength: 0 }, { name: 'stocks', displayKey: 'company_name', source: getStocks }).on('typeahead:selected', function(event, data){ $('#typeahead').val(data.code); }); 
 <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> <script src="//twitter.imtqy.com/typeahead.js/releases/latest/typeahead.bundle.js"></script> <input class="typeahead" /> <input id="typeahead" /> 

    1 answer 1

    Add to the object with data for search, for example, the property search , with all the options for writing the search phrase:

     ... { "company_name": "Facebook", "code": "fb", "search": ["Facebook", "Ѐэйсбук"] // ΠΈΡ‚Π΄.. }, ... 

    Also, accordingly, the datumTokenizer need to be slightly modified:

     datumTokenizer: function (d) { return d.search; // наш массив с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΌΠΈ написания }, 

    As a result, we get something like this:

     var stocksData = [{ "company_name": "Facebook", "code": "fb", "search": ["Facebook", "Ѐэйсбук"] }, { "company_name": "Google", "code": "goog", "search": ["Google", "Π³ΡƒΠ³Π»", "ΠΏΡ‰Ρ‰ΠΏΠ΄Ρƒ"] } ]; var stocks = new Bloodhound({ datumTokenizer: function(d) { return d.search; // наш массив с Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΌΠΈ написания }, queryTokenizer: Bloodhound.tokenizers.whitespace, local: stocksData }); function getStocks(q, sync) { if (q === '') { sync(stocks.all()); } else { stocks.search(q, sync); } } $('.typeahead').typeahead({ minLength: 0 }, { name: 'stocks', displayKey: 'company_name', source: getStocks }).on('typeahead:selected', function(event, data) { $('#typeahead').val(data.code); console.log(data.code); }); 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script> <script src="//twitter.imtqy.com/typeahead.js/releases/latest/typeahead.bundle.js"></script> <input class="typeahead" /> <input id="typeahead" /> 

    • just thank you atdushi) - kursof