ブートストラップ 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
})
...