Twitter Bootstrap Typeahead force selection

J'utilise le plugin Bootstrap Typeahead dans mon application, et voici mon code (c'est un exemple). Je recherche un moyen de valider la sélection de l'utilisateur (essentiellement si l'entrée ne correspond pas à tous les résultats -> vide la case en flou). Le résultat doit correspondre. J'ai cherché partout et je ne pouvais rien trouver. Votre aide serait très appréciée.

$('#search').typeahead({ source: function (query, process) { var states = []; var map = {}; var data = [ { "stateCode": "CA", "stateName": "California" }, { "stateCode": "AZ", "stateName": "Arizona" }, { "stateCode": "NY", "stateName": "New York" }, { "stateCode": "NV", "stateName": "Nevada" }, { "stateCode": "OH", "stateName": "Ohio" } ]; $.each(data, function (i, state) { map[state.stateName] = state; states.push(state.stateName); }); process(states); } }); 

Si vous extrayez les données, les états et la carte, vous pouvez les utiliser dans la fonction .blur pour la recherche:

  var data = [ { "stateCode": "CA", "stateName": "California" }, { "stateCode": "AZ", "stateName": "Arizona" }, { "stateCode": "NY", "stateName": "New York" }, { "stateCode": "NV", "stateName": "Nevada" }, { "stateCode": "OH", "stateName": "Ohio" } ]; var states = []; var map = {}; $.each(data, function (i, state) { map[state.stateName] = state; states.push(state.stateName); }); $('#search').typeahead({ source: function (query, process) { process(states); } }).blur(function(){ if(states[$(this).val()] == null) { $('#search').val(''); } }); 

La solution de mccannf fonctionne, mais dans mon cas avec if(parents.indexOf($(this).val()) === -1) { sur l'événement flou.