2013-05-13 2 views
5

Twitters Typeahead은 "car"에 대한 검색을 위해 "car"와 일치하는 두 번째 단어가 포함 된 구에서 올 수 있습니다. 예를 들어 명함으로 목록에서 자동차를 검색 할 때. 명함이 나타나더라도 차 앞에 나타납니다. IE :Twitter Typeahead 정확히 일치하는 단어와 문구를 만드는 방법

Search Term: Car 
Suggestions: 
Business Card 
Car 
Car Pool 
Carbon 

나는가 입력 한 단어가 가장 관련 (그들은 처음부터 입력 정확히 일치하지 않는 무언가를 제안하지) 같은 더 구글과 트위터가되고 싶어요, 그래서 자동차는 것 명함보다 타이핑 할 때 더 적절합니다.

누군가가 공백을 입력하고 두 번째 단어를 시작할 때까지 실제로 두 번째 단어와 일치하는 것을 멈추고 싶습니다. 내가 입력하지 않는 한 따라서 위의 예 비즈니스 카드 목록에 표시되지 것입니다 :

Business C 

를 내가 일치하고 입력 된 검색의 시작부터 정확히 일치하지 않은 단어를 제안의이 동작을 중지 할 수 있습니다 방법.

이 말을하는 또 다른 방법은 공간을 토큰 화하거나 분할하는 대신 선행을 중지하는 것입니다. 예문은 항상 단어의 시작 부분 (^)과 일치하므로 단어가 공백으로 인식되지 않으면 Google 및 twitters 사용자가 더 기대할 수 있습니다. 어떤 도움

감사합니다, 타일러

UPDATE 1.

나는 값을 가지고 있으며, 토큰 때문에 선행 입력의 _transformDatum 방법에 분할하여 토큰을 토큰 화하지 않는 데이텀을 반환하는 내 데이터 집합을 업데이트 우주. 이 위대한 작품과 지금은 원하는 작동합니다

값 : 애플, 그레이트 원숭이

검색 기간 : AP = 연합 뉴스 제안 : 애플

이 내가 원하는 무엇인가를. 하지만 이제는 새로운 문제가 있습니다.

문제점 : 공백이있는 검색어를 사용할 때 제안 사항이 반환되지 않습니다. (공백) 제안을 대 : 내가 입력 할 때 나는 공간 :

검색어를 입력 그래서

이제 "위대한"제안은 즉시 중지 (없음)

I을 토큰에는 공백이있을 수 없다고 생각합니다. 문서는 명시 적으로 문제가이 말을하지 않더라도 :

데이텀의 정규 형식은 값 속성을 가진 객체이며 이 속성을 토큰. value는 기본 데이터의 값을 나타내는 문자열이며 토큰은 지정된 쿼리와 데이텀을 일치시킬 때 typeahead.js를 지원하는 문자열 모음입니다.

+0

https://github.com/twitter/typeahead .js/blob/master/src/dataset.js # L251). 'toLowerCase()'를 쿼리에 적용하기 만하면 tokenizeQuery에 대한 호출을 제거했습니다. – franzlorenzon

답변

1

할 수 있습니다

$('.typeahead').typeahead({source:myarray, matcher: function(item){ 
    var reg = new RegExp('^'+this.query); 
    if(item.match(reg)) return true; 
    else return false; 
}}) 
+0

응답 해 주셔서 감사 드리며 더 잘 설명하지 못해 죄송합니다. 그러나 트위터의 Typeahead.js는 부트 스트랩과 관련이 없습니다. 내가 명확하게 내 게시물을 업데이 트되었습니다. –

1

경향이 될 것이다 : 나는 방법`getSuggestion`을 (편집 공간 문제를 해결 한

matcher: function (item) { 
     if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) == 0) { 
      return true; 
     } 
    }, 
+0

귀하의 대답은 트위터 부트 스트랩 v2 (부트 스트랩 v3에는 선견지명이 없습니다)와 함께 배포되는 선행에 관한 것입니다. 질문은 다른 제품 인 트위터 타입 어 헤드에 관한 것입니다. – jrochkind

관련 문제