remove spinner from jquery ui autocomplete if nothing found

前端 未结 5 537
忘掉有多难
忘掉有多难 2021-01-12 16:10

I want to remove the spinner (picture which shows that it is loading) from the textfield which supports jquery ui autocomplete. As there is no event for \"no results returne

相关标签:
5条回答
  • 2021-01-12 16:38

    Adapted from my answer here, add the following code to execute after a search is complete (even with 0 results):

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

    That code will trigger an event (autocompletesearchcomplete) that you can then bind to:

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

    Hope that helps.

    0 讨论(0)
  • 2021-01-12 16:43

    This is a known open enhancement for future versions of jQuery UI...

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

    Will have to wait and/or use a workaround (like sending a special response from the server and handle this case in the open event).

    0 讨论(0)
  • 2021-01-12 16:53

    You can edit the CSS and remove the spinner.

    $("object_that_has_the_spinner").removeClass( "ui-autocomplete-loading" );

    0 讨论(0)
  • 2021-01-12 16:56

    If you're stuck on an older version of jQuery ui, the right answer is to use the class ui-autocomplete-loading, which gets added and removed while the request/response is in flight.

    0 讨论(0)
  • 2021-01-12 17:00

    As of jQuery UI v1.9 you can do something like the following:

    $( "#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();
      }
    });
    
    0 讨论(0)
提交回复
热议问题