我在我的bootstrap 3项目中使用Twitter's TypeAhead.js库。这似乎很好,但是,我在我的输入领域遇到了麻烦。只要我开始填写,打开前端,并相应地出现建议框。但是,在选择任何条目之后,输入字段根本没有填充。有人能帮助我吗?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"
}]
在此先感谢!
[编辑]
感谢@低音jobsen,我已经能够部署。如他所述,秘密在于由TypeAhead提供的过滤器()函数。贝娄是这种功能的书面代码。
...
$('#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
})
...
谢谢你很多@BassJobsen!我只是更新了代码来实现'filter'函数,它没有任何缺陷!我非常感谢你的时间和帮助。祝你今天愉快! – vbatista