• Stars
    star
    173
  • Rank 220,124 (Top 5 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Twitter Bootstrap Ajax Typeahead Plugin

Built with Grunt Twitter Bootstrap Ajax Typeahead Plugin

Modifications to the Bootstrap Typeahead plugin to give it ajax capabilities. See Demo

How to Use

To make a regular typeahead plugin query a server for the source, just specify an ajax member when initializing.

Feature

  • 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

Required

  • Twitter Bootstrap 2.0+
  • jQuery 1.8+

Installation

Download jQuery

Download Bootstrap

Download this plugin.

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:

    $('input.typeahead').typeahead(options);

Events

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.

Options

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
displayField 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 10 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.
scrollBar boolean false Used to show scrollBar when there are too many match records and it's set to True.

If this option is set to true,the items value will be 100 and the HTML render menu will be set to:
'<ul class="typeahead dropdown-menu" style="max-height:220px;overflow:auto;" ></ul>'
alignWidth boolean true The align dropdown width by input field width.
source object [] The source to search against.
valueField string 'id' The object property that is returned when an item is selected.

Ajax Options

Name Type Default Description
url string null
    </td>
</tr>
<tr>
    <td>
        timeout
    </td>
    <td>
        integer
    </td>
    <td>
        300
    </td>
    <td>
        Specify the amount of time to wait for keyboard input to stop until you send the query to the server.
        Default is at 300ms.
    </td>
</tr>
<tr>
    <td>
        method
    </td>
<td>
        string
    </td>
<td>
        'get'
    </td>
    <td>
        The method to use, either "post" or "get".
    </td>
</tr>
<tr>
    <td>
        triggerLength
    </td>
<td>
        integer
    </td>
    <td>
        1
    </td>
    <td>
    This is the minimum length of text to take action on. Default is at 1.
    </td>
</tr>
<tr>
    <td>
        loadingClass
    </td>
<td>
        string
    </td>
    <td>
        null
    </td>
    <td>

    </td>
</tr>
<tr>
    <td>
        preDispatch
    </td>
<td>
        function
    </td>
    <td>
        null
    </td>
    <td>
This function will be run prior to any call. It is used to fashion a custom parameter
object to send to the server. Its only argument is the query text. It must return an
object that jQuery's post() function will use as its second argument. There's no default for this.
If not specified, the parameters send to the server are:
    <pre>
        { query: "some text" }
    </pre>
    </td>
</tr>
<tr>
    <td>
        preProcess
    </td>
<td>
        function
    </td>
    <td>
       null
    </td>
    <td>
This function will be run right after a call and before the typeahead list is populated.
It is used to pre process the data returned from the server. Its only argument is the data
from the server. Returning false from this method will hide the typeahead list.
If not specified, the data will be passed to the typeahead mechanism as is.
    </td>
</tr>
<tr>
    <td>
        displayField
    </td>
<td>
        string
    </td>
<td>
        'name'
    </td>
    <td>
    If the data returned from the server is a list of objects (as opposed to an array of strings),
    set this member to the name for the field to use for display.
    </td>
</tr>
<tr>
    <td>
        valueField
    </td>
<td>
        string
    </td>
<td>
        'id'
    </td>
    <td>
      If the data returned from the server is a list of objects (as opposed to an array of strings),
      set this member to the id data for the item into list (*required* for a list of objects).
    </td>
</tr>

Basic Usage

The plugin in its simplest (realistic) form.

Example 1

var typeaheadSource = ['John', 'Alex', 'Terry'];

$('input.typeahead').typeahead({
	source: typeaheadSource
});

Example 2

var typeaheadSource = [{ id: 1, name: 'John'}, { id: 2, name: 'Alex'}, { id: 3, name: 'Terry'}];

$('input.typeahead').typeahead({
	source: typeaheadSource
});

Example 3

var typeaheadSource = [{ 
         id: 1, firstName: 'John'}, { 
         id: 2, firstName: 'Alex'}, { 
         id: 3, firstName: 'Terry'
    }];

$('input.typeahead').typeahead({
        source: typeaheadSource,
        displayField: 'firstName'
});

Example 4

For a quick setup, specify a source url to pull data from:

$('input.typeahead').typeahead({
        ajax: '/path/to/typeahead/source'
});

Extended Usage

$("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;
		}
	}
});

Bootstrap Integration

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.

Browser Support

  • Chrome
  • Firefox 3.5+
  • Safari 4+
  • Internet Explorer 7+
  • Opera 11+

Recommend extensions

Copyright and license

The MIT License (MIT)

Copyright (c) 2011-2014 Twitter, Inc

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Resources

Analytics

Bitdeli Badge

More Repositories

1

caminte

Cross-db ORM for NodeJS
JavaScript
1,091
star
2

express-useragent

NodeJS user-agent middleware
JavaScript
629
star
3

device-uuid

Fast browser device uuid generation library. Written in pure JavaScript, no dependencies.
JavaScript
155
star
4

trinte

TrinteJS - Javascrpt MVC Framework for Node.JS
JavaScript
65
star
5

express-mongodb

MongoDB Session Storage for ExpressJS
JavaScript
27
star
6

2co

2CO is the module that will provide nodejs adapters for 2checkout API payment gateway.
JavaScript
20
star
7

express-uploader

Uploading files middleware for NodeJS, Express, TrinteJS, Connect
JavaScript
15
star
8

bootstrap-fancyfile

Browsers do not let you style file inputs. Fancy File Plugin fixes this problem.
JavaScript
11
star
9

connect-caminte

CrossDB session store for Connect and ExpressJS
JavaScript
10
star
10

caminte-generator

RestFul application generator based on CaminteJS ORM
JavaScript
8
star
11

ispconfig_sync_pdns

This script helps you synchronize ISPConfig and the PowerDNS nameserver
PHP
4
star
12

caminte-cli

Command line interface for CaminteJS cross-db ORM
JavaScript
4
star
13

trinte-creator

Script creator for TrinteJS Javascript MVC Framework.
JavaScript
4
star
14

trinte-ejs

Ejs Templates for TrinteJS Framework
JavaScript
3
star
15

ispmanager_proxy

Proxy plugin for ISPManager Lite
PHP
2
star
16

nginx-proxy-dev

HTML
2
star
17

npm-fix-versions

This module provide fixing versions for npm modules in your project
JavaScript
2
star
18

trinte-themes

Bootstrap themes for TrinteJS Framework
CSS
2
star
19

trinte-auth

Login session ensuring middleware for TrinteJS Framework
JavaScript
2
star
20

xml-feed-validator

This is a validator for syndicated feeds. It works with RSS 0.90 - 2.0. It also validates Atom feeds.
JavaScript
2
star
21

expressis

Modified version of the popular web framework Express.
JavaScript
2
star
22

trintejs-netbeans

NetBeans TrinteJS Project Type Module
Java
1
star
23

trinte-subdomain

Subdomain Middleware for TrinteJS & ExpressJS Javascript Frameworks.
JavaScript
1
star
24

gitlab-zone

This is a Dockerfiles to build a container images for gitlab-runner.
Makefile
1
star
25

ag-php-classes

Небольшой PHP класс для работы с изображениями
PHP
1
star