I'm working with Twitter bootstrap on a Django site I'm making. I have a page where users can enter all of their technical skills in a text input equipped with a bootstrap typeahead. I'm trying to access the text within the currently selected within the dropdown menu, such that when ENTER is pressed and an element is highlighted in the dropdown, it takes that value and displays it below the input text field. Then the input text field is cleared and the user can search for another skill.
$(document).keyup(function(event) {
if (event.keyCode == 13) {
if ($('.dropdown-menu').css('display') != 'none'){
var newskill = $(".dropdown-menu > li.active").val();
alert('Yay');
}
else{
var newskill = $("#enterbox").val();
alert('Boo');
}
return false;
}
});
If the dropdown is visible, then the enter keypress function takes the currently active element of the dropdown and pastes it into the text box (built in to Bootstrap). No alert box shows. Any idea how I can get my function to trigger before that happens, ie before Bootstrap's function kicks in?
Demo
Instead of listening for a keypress (what if the user makes a selection with their mouse?), we can take advantage of the custom events Twitter's Typeahead emits. Namely,
typeahead:selected
– Triggered when a suggestion from the dropdown menu is explicitly selected.You can listen for it using jQuery's .on() method, and you will be provided with information about the user's selection in the second argument.
$('input.typeahead').on('typeahead:selected', function(event, selection) {
alert(selection.value);
});
From there you can do as you like with the selection.value
. The only "gotcha" would be trying to clear the input using .val()
. Since Typeahead does quite a bit of fancy DOM rewriting, you'll need to use their 'setQuery' method as well.
$('input.typeahead').typeahead('setQuery', '');
$(document).keyup(function(event) {
if (event.keyCode == 13) {
$('#yourtextbox').val("");
$('#yourtextbox').typeahead('close');
}
});
you can find the documentation of typeahead here https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md
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