mirror of
https://github.com/devbridge/jQuery-Autocomplete.git
synced 2024-11-25 22:27:39 +00:00
Add ability to limit results for local lookup. Closes #115.
This commit is contained in:
parent
8278419a04
commit
6dad72898a
@ -16,6 +16,7 @@ The standard jquery.autocomplete.js file is around 2.7KB when minified via Closu
|
|||||||
* `lookup`: Lookup array for the suggestions. It may be array of strings or `suggestion` object literals.
|
* `lookup`: Lookup array for the suggestions. It may be array of strings or `suggestion` object literals.
|
||||||
* `suggestion`: An object literal with the following format: `{ value: 'string', data: any }`.
|
* `suggestion`: An object literal with the following format: `{ value: 'string', data: any }`.
|
||||||
* `lookupFilter`: `function (suggestion, query, queryLowerCase) {}` filter function for local lookups. By default it does partial string match (case insensitive).
|
* `lookupFilter`: `function (suggestion, query, queryLowerCase) {}` filter function for local lookups. By default it does partial string match (case insensitive).
|
||||||
|
* `lookupLimit`: Number of maximum results to display for local lookup. Default: no limit.
|
||||||
* `onSelect`: `function (suggestion) {}` Callback function invoked when user selects suggestion
|
* `onSelect`: `function (suggestion) {}` Callback function invoked when user selects suggestion
|
||||||
from the list. `this` inside callback refers to input HtmlElement.
|
from the list. `this` inside callback refers to input HtmlElement.
|
||||||
* `minChars`: Minimum number of characters required to trigger autosuggest. Default: `1`.
|
* `minChars`: Minimum number of characters required to trigger autosuggest. Default: `1`.
|
||||||
|
@ -574,4 +574,27 @@ describe('Autocomplete', function () {
|
|||||||
expect(instance.cachedResponse[cacheKey]).toBeTruthy();
|
expect(instance.cachedResponse[cacheKey]).toBeTruthy();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should limit results for local request', function () {
|
||||||
|
var input = $('<input />'),
|
||||||
|
instance,
|
||||||
|
limit = 3;
|
||||||
|
|
||||||
|
input.autocomplete({
|
||||||
|
lookup: [{ value: 'Jamaica' }, { value: 'Jamaica' }, { value: 'Jamaica' }, { value: 'Jamaica' }, { value: 'Jamaica' }]
|
||||||
|
});
|
||||||
|
|
||||||
|
input.val('Jam');
|
||||||
|
instance = input.autocomplete();
|
||||||
|
instance.onValueChange();
|
||||||
|
|
||||||
|
// Expect all items to be displayed:
|
||||||
|
expect(instance.suggestions.length).toBe(5);
|
||||||
|
|
||||||
|
// Set lookup result limit and verify:
|
||||||
|
instance.setOptions({ lookupLimit: limit });
|
||||||
|
instance.onValueChange();
|
||||||
|
|
||||||
|
expect(instance.suggestions.length).toBe(limit);
|
||||||
|
});
|
||||||
});
|
});
|
@ -449,14 +449,23 @@
|
|||||||
|
|
||||||
getSuggestionsLocal: function (query) {
|
getSuggestionsLocal: function (query) {
|
||||||
var that = this,
|
var that = this,
|
||||||
|
options = that.options,
|
||||||
queryLowerCase = query.toLowerCase(),
|
queryLowerCase = query.toLowerCase(),
|
||||||
filter = that.options.lookupFilter;
|
filter = options.lookupFilter,
|
||||||
|
limit = parseInt(options.lookupLimit, 10),
|
||||||
|
data;
|
||||||
|
|
||||||
return {
|
data = {
|
||||||
suggestions: $.grep(that.options.lookup, function (suggestion) {
|
suggestions: $.grep(options.lookup, function (suggestion) {
|
||||||
return filter(suggestion, query, queryLowerCase);
|
return filter(suggestion, query, queryLowerCase);
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (limit && data.suggestions.length > limit) {
|
||||||
|
data.suggestions = data.suggestions.slice(0, limit);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
},
|
},
|
||||||
|
|
||||||
getSuggestions: function (q) {
|
getSuggestions: function (q) {
|
||||||
|
Loading…
Reference in New Issue
Block a user