2008-10-31 38 views
7

Làm cách nào tôi có thể phát hiện hộp nhập liệu hiện có tự động hoàn thành giao diện người dùng jQuery không? Có vẻ như không phải là một phương pháp bản địa cho điều này, nhưng tôi hy vọng có một cái gì đó đơn giản như thế này:Phát hiện giao diện người dùng jQuery tự động hoàn tất

if ($("#q").autocomplete) 
{ 
    //Do something 
} 

Điều kiện đó, tuy nhiên, dường như luôn luôn trở lại đúng sự thật.

Trả lời

10
if ($("#q").hasClass("ac_input")) { 
    // do something 
} 

CẬP NHẬT

Các tên lớp trong widget autocomplete JQuery UI tại là 'ui-autocomplete-input' do đó, mã đó sẽ là:

if ($("#q").hasClass("ui-autocomplete-input")) { 
    // do something 
} 
1

Đó là sự thật bởi vì khi bạn đã bao gồm các js tự động hoàn thành, mọi đối tượng $() bây giờ có phương thức autocomplete() được xác định (trong trường hợp bạn muốn kích hoạt tự động hoàn thành cho các thành phần đó). Hàm if() của bạn chỉ nói rằng hàm đó không phải là rỗng.

Tôi rất tiếc là không có hệ thống để tôi có thể kiểm tra điều này (đã rời khỏi nhà máy tính xách tay hôm nay), nhưng tôi tin rằng tự động hoàn tất sẽ thêm tên lớp css vào các phần tử đang sử dụng. Bạn có thể tìm kiếm điều đó.

3

Bạn có thể sử dụng

if($.isFunction($.fn.autocomplete)){ } 

.isFunction là một phần của thư viện jQuery. (Trích dẫn: http://james.padolsey.com/jquery/....isFunction)

+1

Điều này chỉ kiểm tra nếu 'tự động hoàn thành' tồn tại dưới dạng hàm, có nghĩa là plugin tự động điền được tải vào bộ nhớ. Nhưng đó không phải là câu hỏi đặt ra. –

9

Bạn cũng có thể tìm thấy những hành vi autocomplete gắn liền với một yếu tố đầu vào của dòng mã sau đây:

if ($('Selector').data('autocomplete')) { 
} 
1

Nếu giao diện người dùng Plugin autocomplete jquery đã được bao gồm cho trang và bạn chỉ muốn để kiểm tra xem một phần tử (đầu vào) nói riêng đã được thiết lập với chức năng autocomplete, bạn có thể sử dụng phương pháp API chính thức như hình dưới đây:

if ($("#q").autocomplete("instance")) { 
    console.log("autocomplete already setup for #q"); 
} else { 
    console.log("NO autocomplete for #q"); 
} 

Thông tin chi tiết có thể fo und tại http://api.jqueryui.com/autocomplete/#method-instance

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