2013-05-13 16 views
5

Twitters Typeahead khớp với bất kỳ từ nào trong cụm từ để tìm kiếm kết quả "xe hơi" có thể đến từ cụm từ có từ thứ hai khớp với "xe hơi". Ví dụ: khi tìm kiếm xe trong danh sách có danh thiếp. Thẻ kinh doanh xuất hiện và thậm chí tệ hơn nó xuất hiện trước xe. IE:Làm thế nào để kết hợp các từ và cụm từ chính xác từ Twitter

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

Tôi muốn nó được hơn google và twitter như (họ không bao giờ đề nghị một cái gì đó mà không được phù hợp chính xác những gì được gõ ngay từ đầu), nơi từ gõ là phù hợp nhất, vì vậy xe sẽ phù hợp hơn khi nhập ô tô so với danh thiếp.

Tôi muốn nó thực sự chỉ STOP khớp với từ thứ hai cho đến khi ai đó gõ dấu cách và bắt đầu từ thứ hai. Vì vậy, trong thẻ ví dụ kinh doanh trên sẽ không xuất hiện trong danh sách, trừ khi tôi gõ:

Business C 

Làm thế nào tôi có thể ngăn chặn hành vi này của phù hợp và đề xuất từ ​​mà không phải là một kết hợp chính xác từ khi bắt đầu tìm kiếm gõ.

Một cách khác để nói điều này là làm thế nào để ngăn chặn các typeahead từ tokenizing hoặc chia tách trên không gian. Các typeahead luôn luôn phù hợp với từ đầu của một từ (^), do đó, nếu không gian không được công nhận như là một ranh giới từ nó sẽ làm việc nhiều hơn như google và twitters người dùng mong đợi.

Nhờ sự giúp đỡ, Tyler

CẬP NHẬT 1.

tôi cập nhật Dataset của tôi để trả lại một Datum có một giá trị và dấu hiệu để các phương pháp typeahead _transformDatum không tokenize các thẻ bằng cách phân chia trên một không gian. Đây hoạt động tuyệt vời và bây giờ nó hoạt động như mong muốn:

Values: Apple, Great Ape

thuật ngữ tìm kiếm: Ấp Gợi ý: của Apple

Đây là những gì tôi muốn. Nhưng bây giờ có một vấn đề mới.

XÁC THỰC: Khi sử dụng cụm từ tìm kiếm có dấu cách, không có đề xuất nào được trả lại.

Vì vậy, bây giờ khi tôi gõ "vĩ đại" những đề nghị dừng ngay sau khi tôi gõ một không gian .:

thuật ngữ tìm kiếm: Tuyệt vời (với một không gian) Gợi ý: (none)

tôi Nghĩ rằng các thẻ không thể có khoảng trống. Mặc dù tài liệu không nói rõ điều này trong một vấn đề:

Biểu mẫu chính tắc là một đối tượng có thuộc tính giá trị và một thuộc tính mã thông báo . giá trị là chuỗi đại diện cho giá trị bên dưới của mã thông số và mã thông báo là tập hợp các chuỗi hỗ trợ typeahead.js trong các biểu mẫu phù hợp với truy vấn đã cho.

+0

tôi đã giải quyết được vấn đề không gian chỉnh sửa phương pháp 'getSuggestion' (https://github.com/twitter/typeahead .js/blob/master/src/dataset.js # L251). Tôi đã xóa cuộc gọi tới 'tokenizeQuery' chỉ cần áp dụng' toLowerCase() 'cho truy vấn. – franzlorenzon

Trả lời

1

Bạn có thể

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

Cảm ơn bạn đã phản hồi và tôi xin lỗi tôi đã không làm rõ hơn nhưng đây là Typeahead.js của Twitter không liên quan đến bootstrap. Tôi đã cập nhật bài đăng của mình để làm rõ. –

1

apt sẽ là:

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

câu trả lời của bạn là về typeahead phân phối với twitter bootstrap v2 (bootstrap v3 không có typeahead). Câu hỏi là về twitter typeahead, một sản phẩm khác. – jrochkind