Je veux exécuter la fonction Javascript juste après l'utilisateur sélectionne une valeur en utilisant Twitter bootstrap Typeahead.
Je recherche quelque chose comme un événement sélectionné.
$('.typeahead').on('typeahead:selected', function(evt, item) {
// do what you want with the item here
})
$('.typeahead').typeahead({
updater: function(item) {
// do what you want with the item here
return item;
}
})
Pour une explication du fonctionnement de typeahead pour ce que vous voulez faire ici, en prenant l'exemple de code suivant:
Champ de saisie HTML:
<input type="text" id="my-input-field" value="" />
Bloc de code JavaScript:
$('#my-input-field').typeahead({
source: function (query, process) {
return $.get('json-page.json', { query: query }, function (data) {
return process(data.options);
});
},
updater: function(item) {
myOwnFunction(item);
var $fld = $('#my-input-field');
return item;
}
})
Explication:
$('#my-input-field').typeahead(
source:
Pour récupérer la liste JSON et l'afficher à l'utilisateur.updater:
. Notez qu'il n'a pas encore mis à jour le champ de texte avec la valeur sélectionnée.item
et faire ce que vous voulez, par exemple myOwnFunction(item)
.$fld
, Au cas où vous voudriez en faire quelque chose. Notez que vous ne pouvez pas référencer le champ à l'aide de $ (this).return item;
dans l'option updater:
pour que le champ de saisie soit réellement mis à jour avec la variable item
.la première fois que j'ai posté une réponse ici (beaucoup de fois j'ai trouvé une réponse ici cependant), alors voici ma contribution, j'espère que cela aide. Vous devriez pouvoir détecter un changement - essayez ceci:
function bob(result) {
alert('hi bob, you typed: '+ result);
}
$('#myTypeAhead').change(function(){
var result = $(this).val()
//call your function here
bob(result);
});
Selon leur documentation , la bonne façon de gérer l'événement selected
est d'utiliser ce gestionnaire d'événements:
$('#selector').on('typeahead:select', function(evt, item) {
console.log(evt)
console.log(item)
// Your Code Here
})
J'ai créé une extension qui inclut cette fonctionnalité.
source: function (query, process) {
return $.get(
url,
{ query: query },
function (data) {
limit: 10,
data = $.parseJSON(data);
return process(data);
}
);
},
afterSelect: function(item) {
$("#divId").val(item.id);
$("#divId").val(item.name);
}