Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Ajax Autocomplete for jQuery allows you to easily create autocomplete/autosuggest boxes for text input fields

License

NotificationsYou must be signed in to change notification settings

devbridge/jQuery-Autocomplete

Repository files navigation

Ajax Autocomplete for jQuery allows you to easily createautocomplete/autosuggest boxes for text input fields.

It has no dependencies other than jQuery.

The standard jquery.autocomplete.js file is around 13KB when minified.

API

The following sets up autocomplete for input fields whereoptions is an object literal that defines the settings to use for the autocomplete plugin. All available option settings are shown in the tables below.

$(selector).autocomplete(options);

General settings (local and Ajax)

SettingDefaultDescription
noCachefalseBoolean value indicating whether to cache suggestion results
delimiteroptionalString or RegExp, that splits input value and takes last part to as query for suggestions. Useful when for example you need to fill list of comma separated values.
minChars1Minimum number of characters required to trigger autosuggest
triggerSelectOnValidInputtrueBoolean value indicating ifselect should be triggered if it matches suggestion
preventBadQueriestrueBoolean value indicating if it should prevent future Ajax requests for queries with the same root if no results were returned. E.g. ifJam returns no suggestions, it will not fire for any future query that starts withJam
autoSelectFirstfalseIf set totrue, first item will be selected when showing suggestions
beforeRenderoptionalfunction (container, suggestions) {} called before displaying the suggestions. You may manipulate suggestions DOM before it is displayed
formatResultoptionalfunction (suggestion, currentValue) {} custom function to format suggestion entry inside suggestions container
formatGroupoptionalfunction (suggestion, category) {} custom function to format group header
groupByoptionalproperty name of the suggestiondata object, by which results should be grouped
maxHeight300Maximum height of the suggestions container in pixels
widthautoSuggestions container width in pixels, e.g.: 300,flex for max suggestion size andauto takes input field width
zIndex9999'z-index' for suggestions container
appendTooptionalContainer where suggestions will be appended. Default valuedocument.body. Can be jQuery object, selector or HTML element. Make sure to setposition: absolute orposition: relative for that element
forceFixPositionfalseSuggestions are automatically positioned when their container is appended to body (look atappendTo option), in other cases suggestions are rendered but no positioning is applied. Set this option to force auto positioning in other cases
orientationbottomVertical orientation of the displayed suggestions, available values areauto,top,bottom. If set toauto, the suggestions will be orientated it the way that place them closer to middle of the view port
preserveInputfalseIftrue, input value stays the same when navigating over suggestions
showNoSuggestionNoticefalseWhen no matching results, display a notification label
noSuggestionNoticeNo resultsText or htmlString or Element or jQuery object for no matching results label
onInvalidateSelectionoptionalfunction () {} called when input is altered after selection has been made.this is bound to input element
tabDisabledfalseSet to true to leave the cursor in the input field after the user tabs to select a suggestion

Event function settings (local and Ajax)

Event settingFunction description
onSearchStartfunction (params) {} called before Ajax request.this is bound to input element
onHintfunction (hint) {} used to change input value to first suggestion automatically.this is bound to input element
onSearchCompletefunction (query, suggestions) {} called after Ajax response is processed.this is bound to input element.suggestions is an array containing the results
transformResultfunction(response, originalQuery) {} called after the result of the query is ready. Converts the result into response.suggestions format
onSelectfunction (suggestion) {} Callback function invoked when user selects suggestion from the list.this inside callback refers to input HtmlElement.
onSearchErrorfunction (query, jqXHR, textStatus, errorThrown) {} called if Ajax request fails.this is bound to input element
onHidefunction (container) {} called before container will be hidden

Local only settings

SettingDefaultDescription
lookupLimitno limitNumber of maximum results to display for local lookup
lookupn/aCallback function or lookup array for the suggestions. It may be array of strings orsuggestion object literals
suggestionn/aNot a settings, but in the context of above row, a suggestion is an object literal with the following format:{ value: 'string', data: any }
lookupFiltern/afunction (suggestion, query, queryLowerCase) {} filter function for local lookups. By default it does partial string match (case insensitive)

Ajax only settings

SettingDefaultDescription
serviceUrln/aServer side URL or callback function that returns serviceUrl string
typeGETAjax request type to get suggestions
dataTypetexttype of data returned from server. Eithertext,json orjsonp, which will cause the autocomplete to use jsonp. You may return a json object in your callback when using jsonp
paramNamequeryThe name of the request parameter that contains the query
paramsoptionalAdditional parameters to pass with the request
deferRequestBy0Number of miliseconds to defer Ajax request
ajaxSettingsoptionalAny additionalAjax Settings that configure the jQuery Ajax request

Default Options

Default options for all instances can be accessed via$.Autocomplete.defaults.

Instance Methods

Autocomplete instance has following methods:

  • setOptions(options): you may update any option at any time. Options are listed above.
  • clear: clears suggestion cache and current suggestions.
  • clearCache: clears suggestion cache.
  • disable: deactivate autocomplete.
  • enable: activates autocomplete if it was deactivated before.
  • hide: hides suggestions.
  • dispose: destroys autocomplete instance. All events are detached and suggestion containers removed.

There are two ways that you can invoke Autocomplete method. One is calling autocomplete on jQuery object and passing method name as string literal.If method has arguments, arguments are passed as consecutive parameters:

$('#autocomplete').autocomplete('disable');$('#autocomplete').autocomplete('setOptions',options);

Or you can get Autocomplete instance by calling autcomplete on jQuery object without any parameters and then invoke desired method.

$('#autocomplete').autocomplete().disable();$('#autocomplete').autocomplete().setOptions(options);

Usage

Html:

<inputtype="text"name="country"id="autocomplete"/>

Ajax lookup:

$('#autocomplete').autocomplete({serviceUrl:'/autocomplete/countries',onSelect:function(suggestion){alert('You selected: '+suggestion.value+', '+suggestion.data);}});

Local lookup (no Ajax):

varcountries=[{value:'Andorra',data:'AD'},// ...{value:'Zimbabwe',data:'ZZ'}];$('#autocomplete').autocomplete({lookup:countries,onSelect:function(suggestion){alert('You selected: '+suggestion.value+', '+suggestion.data);}});

Custom lookup function:

$('#autocomplete').autocomplete({lookup:function(query,done){// Do Ajax call or lookup locally, when done,// call the callback and pass your results:varresult={suggestions:[{"value":"United Arab Emirates","data":"AE"},{"value":"United Kingdom","data":"UK"},{"value":"United States","data":"US"}]};done(result);},onSelect:function(suggestion){alert('You selected: '+suggestion.value+', '+suggestion.data);}});

Styling

Generated HTML markup for suggestions is displayed below. You may style it any way you'd like.

<divclass="autocomplete-suggestions"><divclass="autocomplete-group"><strong>NHL</strong></div><divclass="autocomplete-suggestion autocomplete-selected">...</div><divclass="autocomplete-suggestion">...</div><divclass="autocomplete-suggestion">...</div></div>

Style sample:

.autocomplete-suggestions {border:1px solid#999;background:#FFF;overflow: auto; }.autocomplete-suggestion {padding:2px5px;white-space: nowrap;overflow: hidden; }.autocomplete-selected {background:#F0F0F0; }.autocomplete-suggestionsstrong {font-weight: normal;color:#3399FF; }.autocomplete-group {padding:2px5px; }.autocomplete-groupstrong {display: block;border-bottom:1px solid#000; }

Response Format

Response from the server must be JSON formatted following JavaScript object:

{// Query is not required as of version 1.2.5"query":"Unit","suggestions":[{"value":"United Arab Emirates","data":"AE"},{"value":"United Kingdom","data":"UK"},{"value":"United States","data":"US"}]}

Data can be any value or object. Data object is passed to formatResults functionand onSelect callback. Alternatively, if there is no data you cansupply just a string array for suggestions:

{"query":"Unit","suggestions": ["United Arab Emirates","United Kingdom","United States"]}

Non standard query/results

If your Ajax service expects the query in a different format, and returns data in a different format than the standard response,you can supply the "paramName" and "transformResult" options:

$('#autocomplete').autocomplete({paramName:'searchString',transformResult:function(response){return{suggestions:$.map(response.myData,function(dataItem){return{value:dataItem.valueField,data:dataItem.dataField};})};}})

Grouping Results

SpecifygroupBy option of you data property if you wish results to be displayed in groups. For example, setgroupBy: 'category' if your suggestion data format is:

[{value:'Chicago Blackhawks',data:{category:'NHL'}},{value:'Chicago Bulls',data:{category:'NBA'}}]

Results will be formatted into two groupsNHL andNBA.

Known Issues

If you use it with jQuery UI library it also has plugin namedautocomplete. In this case you can use plugin aliasdevbridgeAutocomplete:

$('.autocomplete').devbridgeAutocomplete({ ...});

It seems that for mobile Safari click events are only triggered if the CSS of the object being tapped has the cursor set to pointer:

.autocomplete-suggestion {     cursor: pointer;}

See issue #542

License

Ajax Autocomplete for jQuery is freely distributable under theterms of an MIT-stylelicense.

Copyright notice and permission notice shall be included in allcopies or substantial portions of the Software.

Authors

Tomas Kirda /@tkirda

About

Ajax Autocomplete for jQuery allows you to easily create autocomplete/autosuggest boxes for text input fields

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp