javascripttypeaheadbloodhound

Return all remote matches with typeahead without extra filtering


Can't seem to figure out a way to disable filtering with typeahead. Basically I just need the autocomplete (or rather drop-down search hint) functionality of it. I am doing a zip code search and resulting postal codes don't necessarily match the queried ones. How do I make it show all matches without doing extra filtering on those again?

Below is the code I have:

var dealers = new Bloodhound({
    datumTokenizer: function (d) {
        return Bloodhound.tokenizers.whitespace(d);
    },
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    remote: {
        url: '/form/find-dealer?postalCode=',
        prepare: function (query, settings) {
            settings.url += encodeURIComponent(query);
            settings.type = 'POST';
            settings.contentType = "application/json; charset=UTF-8";
            return settings;
       }
    }
});

$('input[name=postalCode]').typeahead({
    minLength: 3
}, {
    name: 'dealers',
    display: function (data) {
        return data.title;
    },
    source: dealers.ttAdapter()
});

Note: I know it seems a bit awkward to do a zip code search that way, but the purpose of the designer was for users to search interchangeably by dealer name and zip code.

Additional Info: typeahead.bundle.js - v0.11.1


Solution

  • Not pretty, since the library has been forked and no longer oficially supported by the creator, but this fix did it for me https://github.com/twitter/typeahead.js/pull/1212 . Basically when in remote mode, it returns all matches, which is actually the proper behavior as I see it.

    This SO thread helped twitter typeahead ajax results not all shown