Comment obtenir Bootstrap typeahead cliquez sur le résultat avant de l'entrée d'événement de changement de

Je suis en train d'utiliser bottes typeahead de la souplesse de sélectionner pour les utilisateurs. Donc, si l'élément est connu, ils choisir si elle n'est pas un dialogue s'ouvre laissant entrer dans un nouvel article.

Je fais cela par l'observation de l'événement de modification de l'entrée, si les entrées val n'est pas dans le tableau source (pour la typeahead) puis sur "ajouter un élément" le dialogue est affichée à l'utilisateur. Le problème est que si l'utilisateur clique sur l'une des options d'un événement de modification est envoyée avant le typeahead a une chance de régler le val. C'est comme le clic va provoquer un flou sur le texte.

Je voulais vérifier l'élément actif pour contourner ce problème, donc dans l'événement de changement de regarder le document.activeElement et voir si c'est de la typeahead options, cela n'a pas fonctionné et a renvoyé l'ensemble de l'élément de corps.

Ici est une version tronquée en bas du code:

Html

<div id="contactModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Unknown Contact</h3>
  </div>
  <div class="modal-body">
    <p>The contact you have entered is unknown. Press cancel to enter a different contact or fill out the details below to create a new contact</p>
    <label>Name</label>
    <input id="modal_contact"  type="text" placeholder="dealership contact" value=""/>
    <label>Email</label>
    <input id="modal_contact_email" type="text" placeholder="dealership contact" value=""/>
  </div>
  <div class="modal-footer">
    <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
    <button id="save" class="btn btn-primary">Save changes</button>
  </div>
</div>

Javascript

var contacts = ['pete','geoff'];

$('.typeahead').typeahead({source:contacts, updater : function(item){
    console.log('updater fired'); //fires after first change event
    return item;
}});

$('input').change(function(ev){
    console.log($(ev.target).val());

    if ($.inArray($(ev.target).val(), contacts) < 0)
        $('#contactModal').modal();
})

Et un JSFiddle version http://jsfiddle.net/k39vM/

Ce que quelqu'un sait comment je peux tester si l'utilisateur a cliqué sur un typeahead pour savoir si qui ont provoqué le changement de l'événement?

OriginalL'auteur Dan Walmsley | 2013-04-03