Mi motor de sugerencias funciona bien, solo tengo un problema porque cuando hago clic en el elemento, su objeto json aparece en el elemento de entrada. Me gustaría que solo OrgName aparezca en el valor de entrada.
<input class="form-control companySearch" type="text" value="" name="q" autocomplete="off" placeholder="Search a company"> var organization = new Bloodhound({ remote: { url: '/search/org?term=%QUERY%', wildcard: '%QUERY%' }, datumTokenizer: Bloodhound.tokenizers.whitespace('term'), queryTokenizer: Bloodhound.tokenizers.whitespace }); $(".companySearch").typeahead({ hint: true, highlight: true, minLength: 1, }, { source: organization.ttAdapter(), name: 'organizationsList', templates: { suggestion: function (data) { return '<a class="list-group-item ">' + data.OrgName + ', '+ data.address.Address+ ', '+ data.address.city.City+ ', ' + data.address.city.country.Country + '</a>'; } } } );Tuve un problema similar y lo resolví usando el atributo de display de typeahead.
En tu ejemplo:
$(".companySearch").typeahead({ hint: true, highlight: true, minLength: 1, }, { source: organization.ttAdapter(), name: 'organizationsList', display: 'id', // PUT IT HERE templates: { suggestion: function (data) { return '<a class="list-group-item ">' + data.OrgName + ', '+ data.address.Address+ ', '+ data.address.city.City+ ', ' + data.address.city.country.Country + '</a>'; } } } );De los documentos :
display: para una sugerencia dada, determina la representación de cadena de la misma. Esto se usará cuando se establezca el valor del control de entrada después de seleccionar una sugerencia. Puede ser una cadena clave o una función que transforma un objeto de sugerencia en una cadena. El valor predeterminado es encadenar la sugerencia.
Si no funciona, intente reemplazar display por displayKey (creo que eso es algo en las versiones de escritura anticipada).