I am using Twitter's typeahead.js (https://github.com/twitter/typeahead.js/) on an input field which is pre filled from a query string. After loading the page, i'd like to programmatically trigger the display of typeahead results without the user needing to type anything in the form field.
Out of the box, typeahead.js is only triggered if the user manually types something into the input field and i can not find any method in typeahead.js which i could call to trigger the display of results.
Any pointers would be greatly appreciated.
Thanks!
Triggering input seems to do it.
$(".typeahead").eq(0).val("Uni").trigger("input");
Tested this on the example page.
According to my tests (see fiddle), the focus() method is necessary in order to display the dropdown. So:
theVal = $('.typeahead').val();
$(".typeahead").typeahead('val', '')
$(".typeahead").focus().typeahead('val',theVal).focus();
I actually needed this to strongly encourage users to select from the Bloodhound suggestions coming from a geocoding API call so I could ensure the coordinates were obtained by the client prior to submitting a form.
$(".typeahead").typeahead('lookup').focus();
triggers with existing value of input. you can change the value in advance of course
To anyone finding this issue with twitter's typeahead after version 0.11.1, here is how I solved it with one line:
$(".typeahead-input").typeahead('val', "cookie")
.trigger("input")
.typeahead('open');
As of Typeahead v0.10.1, changing the value of the typeahead will trigger another query and open the dropdown:
var val = $(".typeahead").typeahead('val');
$(".typeahead").typeahead('val', '');
$(".typeahead").typeahead('val', val);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With