Limit the result in jQuery Autocomplete

前端 未结 5 1540
情书的邮戳
情书的邮戳 2021-01-04 18:45

How can you set a limit on the result from the jQuery autocomplete?

This is my code:

        $.ajax({
            url: \"/cache/search/SearchModels.x         


        
5条回答
  •  心在旅途
    2021-01-04 19:39

    Final Update
    after understanding that in my previous answers i was limiting the whole xml result set and not the results of the autocomplete

    As you have overridden the default _renderItem method, you can override the default _renderMenu.

    $.ui.autocomplete.prototype._renderMenu = function( ul, items ) {
       var self = this;
       $.each( items, function( index, item ) {
          if (index < 10) // here we define how many results to show
             {self._renderItem( ul, item );}
          });
    }
    

    answer is modified from this jQueryUI: how can I custom-format the Autocomplete plug-in results? so thanks go to @cheeso..


    Original Answer

    In you success callback use $("SearchModel:lt(10)", xmlResponse).map(...

    The :lt(10) gets elements with an index of less than 10. So max 10 results will be returned..

    (of course the number 10 could be anything you want)

    Look at :lt() selector at http://api.jquery.com/lt-selector/

    update

    Although i cannot understand why the first answer does not work, since the SearchModel is a tag and we target that.. we can move the filtering in the map method..

    success: function(xmlResponse) {
                    var data = $("SearchModel", xmlResponse).map(function(index) {
                        if (index<10)
                          {
                            return {
                                value: $("Name", this).text() + ", " + $("Description", this).text(),
                                id: $("No", this).text(),
                                name: $("Name", this).text(),
                                url: $("URL", this).text()
                                   };
                          }
                          else
                          { return null; }
                    }).get();
    

    documentation of map()

提交回复
热议问题