2011-01-18 30 views

Trả lời

9

Dường như tôi đã có thể trả lời câu hỏi của riêng tôi rồi. Tôi mở ra một giải pháp tốt hơn nếu ai đó có nó. Tôi đã thêm điều này vào phần khởi động tự động hoàn tất .. về cơ bản nó sẽ đặt lại vị trí của ô mở cho một bản bù mới.

open: function(event, ui) { 
    var autocomplete = $(".ui-autocomplete"); 
    var oldTop = autocomplete.offset().top; 
    var newTop = oldTop - autocomplete.height() - $("#quick_add").height() - 10; 

    autocomplete.css("top", newTop); 
} 
+0

Bạn don không cần sử dụng các đối số 'event' và' ui' nếu nó không được sử dụng trong hàm. Ngoài ra, nó không hoạt động nếu bạn thay đổi kích thước cửa sổ của bạn. Bạn có thể sử dụng các công cụ dev F12 để kiểm tra nó. –

16

Bạn có thể sử dụng giao diện người dùng jQuery Position utility. Dưới đây là một ví dụ:

$(".ui-autocomplete").position({ 
    my: "left bottom", 
    at: "left top", 
    of: $("#quick_add"), 
    collision: "flip flip" 
}); 
+3

'$ (" # quick_add ")' trong ví dụ này là gì? Nó là hộp tự động hoàn thành hay cái gì khác? – Yuck

4

phiên bản hiện tại của jQuery UI cho phép đưa ra các Autocomplete phụ tùng một đối tượng vị trí với các tùy chọn, với các tính chất tương tự như widget Chức vụ nêu trên. vì vậy bạn có thể sử dụng điều đó để định vị danh sách đề xuất tùy thích.

+0

Tôi đồng ý .. tốt nhất để cho nó như là tùy chọn –

24

Đưa câu trả lời @ mvonlintel trong một cách khác, thiết lập vị trí trình đơn đề nghị trong tờ khai phụ tùng:

$('selector').autocomplete(
{ 
    position: { my: "left bottom", at: "left top", collision: "flip" }, 
    . 
    . 
}); 
+0

Tôi thích cách này =) – Bryuk

+0

Điều này không hiệu quả đối với tôi. – Yuck

+0

điều này làm việc cho tôi :) –

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