我想从支持jquery ui autocomplete的文本字段中删除微调器(显示正在加载的图片)。 由于没有“源没有返回结果”的事件,因此无法触发此事。
$( "#q" ).autocomplete({
source: "${createLink(mapping:'qsearch')}",
minLength: 2,
select: function( event, ui ) {
foo( ui.item.id );
},
search: function( event, ui ) {
bla();
}
});
答案 0 :(得分:6)
如果您坚持使用较旧版本的jQuery ui,正确的答案是使用类ui-autocomplete-loading
,在请求/响应处于运行状态时会添加和删除该类。
答案 1 :(得分: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 */
});
希望有所帮助。
答案 2 :(得分:3)
您可以编辑CSS并删除微调器。
$(“object_that_has_the_spinner”)。removeClass(“ui-autocomplete-loading”);
答案 3 :(得分:3)
从jQuery UI v1.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();
}
});
答案 4 :(得分:1)
这是jQuery UI未来版本的已知开放增强...
http://bugs.jqueryui.com/ticket/6777
必须等待和/或使用解决方法(例如从服务器发送特殊响应并在打开事件中处理此情况)。