2011-08-17 28 views
7

Ví dụ mã ở đây: http://jsbin.com/etaziy (sử dụng http://jqueryui.com/demos/autocomplete/)jquery .autocomplete ui() không bắn khi cùng thư ký sau khi blur()

Nếu bạn gõ vào một 'j' bạn sẽ có được 3 tên, 'John' ' Jack 'và' Joe '. Nếu bạn sau đó mờ đi, tôi xóa đầu vào, chỉ bằng cách làm cho các đầu vào val (''). Sau đó, nếu bạn quay trở lại đầu vào, và gõ 'j' một lần nữa, không có gì xảy ra? Nó không phải cho đến khi bạn gõ một chữ cái phù hợp thứ hai mà bạn nhận được hiển thị popup.

Ví dụ của tôi có vẻ hơi lạ, nhưng về cơ bản đây là phiên bản thực sự bị cắt giảm về những gì tôi đang làm việc. Tôi cần phải xóa đầu vào sau khi làm mờ() và xóa nó sau khi lựa chọn được thực hiện. Làm điều này là làm cho các lựa chọn tiếp theo trông lỗi.

Tôi phần nào nghĩ đây là chức năng dự định, nhưng với mục đích của tôi, nó không phải những gì tôi muốn. Tôi thực sự cần cửa sổ bật lên có danh sách để hiển thị ngay khi có bất kỳ chữ cái nào được nhập.

Chúc mừng.

Trả lời

10

Sự cố là tự động hoàn thành theo dõi giá trị khớp với nội bộ, vì vậy khi bạn nhập j nó đặt giá trị nội bộ này thành 'j' và sau đó nó không được đặt lại thành chuỗi trống khi bạn đã thay đổi đầu vào thành trống.

Sau khi xem xét nguồn tự động hoàn thành, tôi không thể tìm hiểu cách truy cập trực tiếp vào biến nội bộ, nhưng bạn có thể buộc tự động điền để cập nhật cho bạn bằng cách chạy tìm kiếm khác khi bạn đã thay đổi đầu vào thành trống (và có chiều dài bằng 0 nó sẽ không thực sự tìm kiếm).

$(function() { 
    $("#search").autocomplete({ 
       source: data, 
       change: function() { // Triggered when the field is blurred, if the value has changed; ui.item refers to the selected item. 
         $("#search").val(""); 
         $("#search").autocomplete("search", ""); //THIS IS THE NEW LINE THAT MAKES IT HAPPY 
       } 
     }); 
}); 
4

Chỉ cần thay thế dòng 98 trong jquery.ui.autocomplete.js

if (self.term != self.element.val()) { // only search if the value has changed 

với if(true){

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