Modifications to the Bootstrap Typeahead plugin to give it ajax capabilities
To make a regular typeahead plugin query a server for the source, just specify an ajax member when initializing.
- Twitter Bootstrap 2.0+
- jQuery 1.7+
Download jQuery
- Download the latest release
- Clone in Windows
- Clone the repo:
git clone git://github.com/jquery/jquery.git
.
Download Bootstrap
- Download the latest release.
- Clone in Windows
- Clone the repo:
git clone git://github.com/twitter/bootstrap.git
. - Install with Twitter's Bower:
bower install bootstrap
.
- Download the latest release
- Clone in Windows
- Clone the repo:
git clone git://github.com/biggora/bootstrap-ajax-typeahead.git
<link href="/path/to/bootstrap.css" rel="stylesheet">
<script src="/path/to/jquery.js" type="text/javascript"></script>
<script src="/path/to/bootstrap-typeahead.js" type="text/javascript"></script>
$('input.typeahead').typeahead(options);
Event | Description |
---|---|
grepper | Filters relevant results from the source. |
highlighter | Highlights any matching results in the list. |
onSelect |
The callback function that is invoked when an item is chosen.
{ item : { value: "", text: "" } } |
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 | 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 |
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. |
Name | Type | Default | Description |
---|---|---|---|
url | string | null |
|
The plugin in its simplest (realistic) form.
var typeaheadSource = [{ id: 1, name: 'John'}, { id: 2, name: 'Alex'}, { id: 3, name: 'Terry'}];
$('input.typeahead').typeahead({
source: typeaheadSource
});
For a quick setup, specify a source url to pull data from:
$('input.typeahead').typeahead({
ajax: '/path/to/typeahead/source'
});
$("input.typeahead").typeahead({
onSelect: function(item) {
console.log(item);
},
ajax: {
url: "/path/to/source",
timeout: 500,
displayField: "title",
triggerLength: 1,
method: "get",
loadingClass: "loading-circle",
preDispatch: function (query) {
showLoadingMask(true);
return {
search: query
}
},
preProcess: function (data) {
showLoadingMask(false);
if (data.success === false) {
// Hide the list, there was some error
return false;
}
// We good!
return data.mylist;
}
}
});
For simple autocomplete use cases, the typeahead component [Bootstrap][bootstrap] provides should suffice. However, if you'd prefer to take advantage of some of the advance features typeahead.js provides, here's what you'll need to do to integrate typeahead.js with Bootstrap:
- If you're customizing Bootstrap, exclude the typeahead component. If you're depending on the standard bootstrap.js, ensure bootstrap-typeahead.js is loaded after it.
- The DOM structure of the dropdown menu used by typeahead.js differs from the DOM structure of the Bootstrap dropdown menu. You'll need to load some [additional CSS][typeahead-bootstrap.css] in order to get the bootstrap-typeahead.js dropdown menu to fit the default Bootstrap theme.
- Chrome
- Firefox 3.5+
- Safari 4+
- Internet Explorer 7+
- Opera 11+
- Bootstrap Fancy File Plugin
- TrinteJS - Javascrpt MVC Framework for Node.JS
- CaminteJS - Cross-db ORM for NodeJS
- MongoDB Session Storage for ExpressJS
- Middleware exposing user-agent for NodeJS
- 2CO NodeJS adapter for 2checkout API payment gateway
Copyright 2012 Twitter, Inc.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
- Visit the author website.
- Follow @biggora on Twitter for updates.
- Report issues on the github issues page.