1

1〜5個のアイテムを持つオートコンプリートドロップダウンの最後に1個のアイテムを追加する方法はありますか? 使っopenていたのですが、ロード時にドロップダウンにスピナーを追加したため、うまく動作しません。

jQuery:

$("#search").autocomplete({
  source: function(request, response) {
    response([{loading: true}]);
    return $.ajax({
      url: "/search",
      timeout: 10000,
      dataType: "json",
      data: {
        query: request.term
      },
      success: function(data) {
        var results;
        results = [];
        results = $.map(data, function(result) {
          return {
            label: result.name,
          };
        });
        return response(results);
      }
    });
  }
  //open doesn't work because I have a spinning effect that opens a dropdown
  //when the search is loading.
  //open: function() {
  //  alert('test');
  //}
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
  if(item.loading) {
    return $( "<li id='spinner'></li>" )
      .appendTo( ul );
  }
};

ありがとうございました!

4

1 に答える 1

4

コールバックpushに送信する前に、必要なアイテムを結果リストに追加できるはずです。response

$("#search").autocomplete({
    source: function(request, response) {
        response([{loading: true}]);
        $.ajax({
            url: "/search",
            timeout: 10000,
            dataType: "json",
            data: {
                query: request.term
            },
            success: function(data) {
                var results = $.map(data, function(result) {
                    return {
                        label: result.name,
                    };
                });

                results.push({ label: "My Custom Item" });
                response(results);
            }
        });
    }
});

例: http://jsfiddle.net/m3MGH/1/

于 2012-08-23T00:37:40.720 に答える