Trả lời

27
$('.typeahead').on('typeahead:selected', function(evt, item) { 
    // do what you want with the item here 
}) 
+2

https://github.com/twitter/typeahead.js khác với kiểu gõ Bootstrap – Utopik

+0

Cách tiếp cận này hoạt động cho https://twitter.github.io/typeahead.js/ không phải cho bootstrap twitter. (typeahead bây giờ là tách ra từ twitter bootstrap) –

+0

là có cách nào để có được chìa khóa ép cho xử lý này? các evt var dường như không có một 'mà' propery – HussienK

5

lần đầu tiên tôi đã đăng một câu trả lời trên đây (nhiều của thời gian tôi đã tìm thấy một câu trả lời ở đây mặc dù), vì vậy đây là sự đóng góp của tôi, hy vọng nó sẽ giúp. Bạn sẽ có thể phát hiện thay đổi - hãy thử cách này:

function bob(result) { 
    alert('hi bob, you typed: '+ result); 
} 

$('#myTypeAhead').change(function(){ 
    var result = $(this).val() 
    //call your function here 
    bob(result); 
}); 
+1

Đã đánh dấu xuống vì đây không phải là cách được hỗ trợ cũng như không được đề xuất để xử lý các yếu tố được chọn trên typeahead, xem tại đây: https://github.com/twitter/typeahead.js tại: typahead: đã chọn – Oddman

2

Tôi đã tạo tiện ích bao gồm tính năng đó.

https://github.com/tcrosen/twitter-bootstrap-typeahead

+1

Liên kết bị hỏng ngay bây giờ. kho lưu trữ?https://github.com/tcrosen/twitter-bootstrap-typeahead – tsellon

+0

Xin lỗi tôi đã cập nhật liên kết cách đây một lúc, tính đến ngày 29 tháng 4 nó hoạt động. – Terry

12
$('.typeahead').typeahead({ 
    updater: function(item) { 
     // do what you want with the item here 
     return item; 
    } 
}) 
+0

Cách chính thức để làm những gì được yêu cầu và hoạt động tốt :) – PierrickM

5

Để giải thích về cách typeahead làm việc cho những gì bạn muốn làm ở đây, lấy ví dụ đoạn mã sau:

trường nhập

HTML:

<input type="text" id="my-input-field" value="" /> 

Khối mã JavaScript:

$('#my-input-field').typeahead({ 
    source: function (query, process) { 
     return $.get('json-page.json', { query: query }, function (data) { 
      return process(data.options); 
     }); 
    }, 
    updater: function(item) { 
     myOwnFunction(item); 
     var $fld = $('#my-input-field'); 
     return item; 
    } 
}) 

Giải thích:

  1. trường nhập của bạn được thiết lập như là một lĩnh vực typeahead với dòng đầu tiên: $('#my-input-field').typeahead(
  2. Khi văn bản được nhập vào, nó cháy source: tùy chọn để lấy danh sách JSON và hiển thị nó cho người dùng.
  3. Nếu người dùng nhấp vào một mục (hoặc chọn mục đó bằng các phím con trỏ và nhập), nó sẽ chạy tùy chọn updater:. Lưu ý rằng nó chưa cập nhật trường văn bản với giá trị được chọn.
  4. Bạn có thể lấy mục đã chọn bằng biến số item và thực hiện những gì bạn muốn với biến đó, ví dụ: myOwnFunction(item).
  5. Tôi đã bao gồm một ví dụ về việc tạo tham chiếu đến trường nhập chính nó $fld, trong trường hợp bạn muốn làm điều gì đó với nó. Lưu ý rằng bạn không thể tham chiếu trường bằng $ (this).
  6. Bạn phải sau đó bao gồm dòng return item; trong tùy chọn updater: để trường nhập thực sự được cập nhật với biến số item.
1

Theo documentation của họ, cách thích hợp xử lý selected sự kiện là bằng cách sử dụng bộ xử lý này sự kiện:

$('#selector').on('typeahead:select', function(evt, item) { 
    console.log(evt) 
    console.log(item) 
    // Your Code Here 
}) 
0
source: function (query, process) { 
    return $.get(
     url, 
     { query: query }, 
     function (data) { 
      limit: 10, 
      data = $.parseJSON(data); 
      return process(data); 
     } 
    ); 
}, 
afterSelect: function(item) { 
    $("#divId").val(item.id); 
    $("#divId").val(item.name); 

} 
Các vấn đề liên quan