我在我的 bootstrap 3 项目中使用Twitter 的 TypeAhead.js库。看起来很棒,但是,我的输入字段有问题。一旦我开始填写它,就会触发预先输入并相应地出现建议框。但是,在选择任何条目后,输入字段根本没有填写。有人能帮助我吗?
这是我现在正在工作的代码:
HTML:
<input type="text" class="form-control typeahead" name="txtCliente" id="txtCliente" placeholder="Cliente ou Aterro de Destino" value="" maxlength="100" required>
Javascript 代码 - 激活字段:
$('.typeahead').typeahead({
name: 'parceiro',
remote: '../api/index.php/parceiro/busca/%QUERY',
template: [
'<p>{{RAZAO_SOCIAL}}</p>',
'<p>{{DESCRICAO_TIPOPARCEIRO}}</p>',
'<p>{{CNPJ}}</p>'
].join(''),
engine: Hogan
});
最后,从服务器返回的 JSON:
[{
"ID":"17",
"TIPOPARCEIRO":"C",
"DESCRICAO_TIPOPARCEIRO":"CLIENTE",
"RAZAO_SOCIAL":"VINICIUS SOARES BATISTA",
"CNPJ":"12344123213123"
}]
提前致谢!
[编辑]
感谢@bass-jobsen,我已经能够部署它。正如他所说,秘密 在于 TypeAhead 提供的filter()函数。波纹管是这种功能的书面代码。
...
$('#txtCliente').typeahead({
header: '<b>Clientes</b>',
template: [
'<span>{{RAZAO_SOCIAL}}<BR>{{CNPJ}}</span>',
].join(''),
limit: 3,
remote: {
url: '../api/index.php/parceiro/busca/%QUERY',
filter: function(parsedResponse) {
var dataset = [];
for(i = 0; i < parsedResponse.length; i++) {
if(parsedResponse[i].TIPOPARCEIRO == "C" || parsedResponse[i].TIPOPARCEIRO == "A"){
dataset.push({
ID: parsedResponse[i].ID,
RAZAO_SOCIAL: parsedResponse[i].RAZAO_SOCIAL,
DESCRICAO_TIPOPARCEIRO: parsedResponse[i].DESCRICAO_TIPOPARCEIRO,
CNPJ: parsedResponse[i].CNPJ,
value: parsedResponse[i].RAZAO_SOCIAL
});
}
}
return dataset;
},
},
engine: Hogan
})
...