처음에는 완벽하게 작동하는 자동 완성을 수행하기 위해 jQuery typeahead를 사용하고 있지만 목록에서 옵션을 선택한 다음 다시 사용하려고하면 (입력을 입력하여) 결과가 다시 표시되지 않습니다.
옵션을 선택하면 자동 완성 기능이 파괴되는 것 같습니다.
업데이트 # 1
무슨 일이 일어나고 있는지 볼 수 있도록 jsfiddle을 만들었습니다. 입력에 "someone"을 입력하여 자동 완성 된 데이터를 얻을 수 있습니다. http://jsfiddle.net/cristiangrojas/rhtd9o8k/3/
var Opportunities = new Bloodhound({
datumTokenizer: function(d) {
return Bloodhound.tokenizers.whitespace(
'{id} {name} {identification} {email} {vehicle_registration}'.assign({
"id": d["id"],
"name": d["name"],
"identification": d["identification"],
"email": d["email"],
"vehicle_registration": d["vehicle_registration"]
})
);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: opportunities
});
Opportunities.initialize();
$('input[name="opportunities_search"]').typeahead({
hint: true,
highlight: true,
minLenght: 1
}, {
name: 'oportunidades',
displayKey: 'id',
source: Opportunities.ttAdapter(),
templates: {
empty: [
'<div class="empty-message">',
'No se encontró ninguna oportunidad',
'</div>'
].join('\n'),
suggestion: Handlebars.compile(
'<p>' +
'Opp #{{ id }}' +
'<br>' +
'{{ name }}' +
'<br>' +
'CC: {{ identification }}' +
'<br>' +
'email: {{ email }}' +
'<br>' +
'Placa: {{ vehicle_registration }}' +
'</p>'
)
}
});
문서에서 :
https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md
displayKey – 주어진 제안 객체에 대해 문자열 표현을 결정합니다. 제안을 선택한 후 입력 컨트롤의 값을 설정할 때 사용됩니다. 제안 개체를 문자열로 변환하는 키 문자열 또는 함수일 수 있습니다. 기본값은 값입니다.
'id'의 키 문자열을 사용하고 있지만 id에 대한 json 데이터는 문자열이 아닙니다. 따라서 json 데이터를 변경하여 ID를 문자열로 사용하거나 함수를 사용하여이 바이올린에서와 같이 ID를 문자열로 반환합니다.
displayKey: function(d){return d.id+'';},
http://jsfiddle.net/rhtd9o8k/19/
어디 d
제안 객체가 돌려과 id 속성에 빈 문자열을 추가하는 것은 자바 스크립트에서 숫자를 문자열로 캐스팅 할 수있는 쉬운 방법입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다