如果没有找到,从jquery ui自动完成中删除微调器

时间:2010-11-30 16:35:14

标签: jquery-ui autocomplete

我想从支持jquery ui autocomplete的文本字段中删除微调器(显示正在加载的图片)。 由于没有“源没有返回结果”的事件,因此无法触发此事。

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

5 个答案:

答案 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

必须等待和/或使用解决方法(例如从服务器发送特殊响应并在打开事件中处理此情况)。