Trả lời

21

Bạn cần phải kích hoạt sự kiện search bằng tay và thiết lập các tùy chọn minLength trên widget để zero:

$("input").autocomplete({ 
    minLength: 0, 
    /* other options */ 
}).on("focus", function() { 
    $(this).autocomplete("search", ""); 
}); 

dụ làm việc:http://jsfiddle.net/9JmVu/

+1

tôi không thể có được điều này để làm việc trong phiên bản chúng tôi đang sử dụng tuy nhiên, thay thế "on" với: .focus (function() {$() .autocomplete này ("search", "")}); hoạt động tốt. –

+0

Bạn có thể đang sử dụng phiên bản cũ hơn của jQuery. –

+0

Điều này có thể xảy ra nếu không gọi sự kiện 'tìm kiếm'? –

1

Tôi nghĩ rằng tôi đã nhận nó thực sự. Nếu bạn đặt minLength là 0, và sau đó kích hoạt tìm kiếm cho "", nó sẽ mở menu.

 $(inputSelector).autocomplete(
       { 
        source: this.validConstructCodes, 
        minLength: 0, 
        autoFocus: true, 
        autoSelect: true 
       }); 
     $(inputSelector).focus(function(event) { 
     $(this).autocomplete("search" , ""); 
     }); 
1

Như được giải thích từ Andrew, bạn cần kích hoạt sự kiện.

Nhưng khi bạn nhận được kết quả từ yêu cầu ajax, tốt hơn là hiển thị lại kết quả thay vì hỏi lại máy chủ. Giá trị minLength là độc lập, có thể là 2 như được đề xuất trên các yêu cầu máy chủ.

$("input").autocomplete({ 
    minLength: 2, 
    /* your options */ 
}).on("focus", function() { 
    /* the element with the search results */ 
    var uid = $("#ui-id-"+$(this).autocomplete("instance").uuid); 

    if(uid.html().length == 0) { 
     /* same as $(this).autocomplete("search", this.value); */ 
     $(this).keydown(); 
    } 
    else { 
     uid.show(); 
    } 
}); 
Các vấn đề liên quan