UPDATE (Feb 21, 2013)
I no longer have the time to maintain this plugin. If you are looking for updated code, please take a look at the following to help you:
-
Twitter's new advanced Typeahead - Not associated with Bootstrap
v1.2.2
Terry Rosen @rerrify
An extension of the Twitter Bootstrap Typeahead plugin
http://twitter.github.com/bootstrap/javascript.html#typeahead
All the thanks in the world to @mdo and @fat of @twitter for the wonderful Bootstrap utility.
I required more functionality out of the Typeahead plugin so I created this extension with some additional features:
- A callback function is available for when an item is selected
- Ability to specify data source properties
- Ability to use a local or remote (AJAX) data source
- Most original methods are overridable so you can customize without changing the source code
- Twitter Bootstrap 2.0+
- jQuery 1.7+
- ZIP
- Clone in Windows
git clone git://github.com/tcrosen/twitter-bootstrap-typeahead.git
-
Include files in your HTML. The minimum required for this plugin are:
<script src="/path/to/jquery.js" type="text/javascript"></script> <script src="/path/to/bootstrap-typeahead.js" type="text/javascript"></script> -
Execute the plugin:
$(myElement).typeahead(options);
| Event | Description |
|---|---|
| grepper | Filters relevant results from the source. |
| highlighter | Highlights any matching results in the list. |
| itemSelected |
The callback function that is invoked when an item is chosen.
|
| lookup | Determines if source is remote or local and initializes the search. |
| matcher | Looks for a match between the query and a source item. |
| render | Renders the list of results. |
| select | Selects an item from the results list. |
| sorter | Sorts the results. |
| Name | Type | Default | Description |
|---|---|---|---|
| ajax | object |
{
url: null,
timeout: 300,
method: 'post',
triggerLength: 3,
loadingClass: null,
displayField: null,
preDispatch: null,
preProcess: null
}
|
The object required to use a remote datasource. See also: ajax as a string (below) |
| ajax | string | null |
Optionally, a simple URL may be used instead of the AJAX object. See also: ajax as an object (above) |
| display | string | 'name' | The object property to match the query against and highlight in the results. |
| item | string | '<li><a href="#"></a></li>' | The HTML rendering for a result item. |
| items | integer | 8 | The maximum number of items to show in the results. |
| menu | string | '<ul class="typeahead dropdown-menu"></ul>' | The HTML rendering for the results list. |
| source | object | [] | The source to search against. |
| val | string | 'id' | The object property that is returned when an item is selected. |
The plugin in its simplest (realistic) form.
var mySource = [{ id: 1, name: 'Terry'}, { id: 2, name: 'Mark'}, { id: 3, name: 'Jacob'}];
$('#myElement').typeahead({
source: mySource
});
Or using a remote data source:
$('#myElement').typeahead({
ajax: '/path/to/mySource'
});
Examples demonstrating various options are included in this project under the /demo folder
I found certain things to be redundant, like having separate sort and display properties. I can't think of a reasonable scenerio where you would be sorting based on something different than what you are displaying.
I added comments, semi-colons and other formatting that I like to use based on idiomatic JS guidelines.
If you are concerned with the bigger file size, you should always be minifying your JS before production use.
1.2.2
- Added support for jQuery 1.8 & Bootstrap 2.1
- Removed usage of jQuery.browser #9385
- Changed jQuery.data() to jQuery._data() in order to make test suite operational #11718
- Added an undocumented function
eventSupported(eventName)to verify browser support forkeydownevent. You may override this function if you prefer to do this check another way.
1.2.1
- Some AJAX tests added
- Added fix for spontaneous AJAX bug reported by users
grepperandlookupmethods are now overridable
1.2
- Added AJAX support
1.1
- Major code cleanup
- Test cases added
- Documentation improvements
1.3
- Add template support