2010-11-30 56 views
6

我想從支持jquery ui自動完成的文本字段中刪除微調(圖片顯示它正在加載)。 由於沒有「源代碼返回結果」的事件,因此無法觸發此事件。從jquery ui自動完成刪除微調如果沒有發現

$("#q").autocomplete({ 
    source: "${createLink(mapping:'qsearch')}", 
    minLength: 2, 
    select: function(event, ui) { 
     foo(ui.item.id); 
    }, 
    search: function(event, ui) { 
     bla(); 
    } 
}); 

回答

5

從我的回答here改編,添加以下代碼來執行搜索完成後(即使是0結果):

var __response = $.ui.autocomplete.prototype._response; 
$.ui.autocomplete.prototype._response = function(content) { 
    __response.apply(this, [content]); 
    this.element.trigger("autocompletesearchcomplete", [content]); 
}; 

該代碼會觸發一個事件(autocompletesearchcomplete),然後可以綁定到:

$("#q").bind("autocompletesearchcomplete", function(event, contents) { 
    /* Remove spinner here */ 
}); 

希望有所幫助。

3

您可以編輯CSS並刪除微調框。

$(「object_that_has_the_spinner」)。removeClass(「ui-autocomplete-loading」);

+0

但如何觸發這個編輯? – skurt 2010-12-03 16:14:33

1

這是一個已知開放增強的jQuery UI的未來版本...

http://bugs.jqueryui.com/ticket/6777

將不得不等待和/或使用一種變通方法(如從服務器發送一個特殊的響應和處理這個問題在公開賽中)。

+0

現在已解決此問題。 – 2011-06-01 04:13:08

6

如果你被困在老版本的jQuery UI中,正確的答案是使用類ui-autocomplete-loading,在請求/響應處於運行狀態時會被添加和刪除。

3

在jQuery UI 1.9版的,你可以做類似如下:

$("#q").autocomplete({ 
    source: "${createLink(mapping:'qsearch')}", 
    select: function(event, ui) { 
    foo(ui.item.id); 
    }, 
    search: function(event, ui) { 
    $("#spinner").show(); 
    }, 
    response: function(event, ui) { 
    $("#spinner").hide(); 
    } 
});