Skip to content
This repository was archived by the owner on Sep 10, 2023. It is now read-only.

Commit fd2316b

Browse files
committed
Migrate from gh-pages
1 parent 76dbc51 commit fd2316b

File tree

3 files changed

+245
-9
lines changed

3 files changed

+245
-9
lines changed

README.md

+245-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,248 @@
1-
jQuery Tokeninput: A Tokenizing Autocomplete Text Entry
2-
=======================================================
31

4-
Overview
5-
--------
6-
Tokeninput is a jQuery plugin which allows your users to select multiple items from a predefined list, using autocompletion as they type to find each item. You may have seen a similar type of text entry when filling in the recipients field sending messages on facebook.
2+
# jQuery Tokeninput: A Tokenizing Autocomplete Text Entry
73

8-
Documentation, Features and Demos
9-
---------------------------------
10-
Full details and documentation can be found on the project page here:
4+
## Overview
115

12-
<http://loopj.com/jquery-tokeninput/>
6+
Tokeninput is a jQuery plugin which allows your users to select multiple items
7+
from a predefined list, using autocompletion as they type to find each item.
8+
You may have seen a similar type of text entry when filling in the recipients
9+
field sending messages on facebook.
10+
11+
## Features
12+
13+
- Intuitive UI for selecting multiple items from a large list
14+
- Easy to skin/style purely in css, no images required
15+
- Supports any backend which can generate JSON, including PHP, Rails, Django, ASP.net
16+
- Smooth animations when results load
17+
- Select, delete and navigate items using the mouse or keyboard
18+
- Client-side result caching to reduce server load
19+
- Crossdomain support via JSONP
20+
- Callbacks when items are added or removed from the list
21+
- Preprocess results from the server with the onResult callback
22+
- Programatically add, remove, clear and get tokens
23+
- Customize the output format of the results and tokens
24+
25+
## Screenshots
26+
27+
![List style](list-style.png)
28+
29+
Vertical list style item selection
30+
31+
![List style](facebook-style.png)
32+
33+
Facebook style item selection
34+
35+
## Installation & Setup
36+
37+
### Create a server-side script to handle search requests
38+
39+
Create a server-side script (PHP, Rails, ASP.net, etc) to generate your
40+
search results. The script can fetch data from wherever you like, for
41+
example a database or a hardcoded list. Your script must accept a GET parameter
42+
named `q` which will contain the term to search for. E.g.
43+
<http://www.example.com/myscript?q=query>
44+
45+
Your script should output JSON search results in the following format:
46+
47+
```javascript
48+
[
49+
{"id":"856","name":"House"},
50+
{"id":"1035","name":"Desperate Housewives"},
51+
...
52+
]
53+
```
54+
55+
You may optionally specify an attribute of "readonly" and set it to true if you
56+
would like some of the tokens to be non-removable:
57+
58+
```javascript
59+
[
60+
{"id":"856","name":"House","readonly":true},
61+
{"id":"1035","name":"Desperate Housewives"},
62+
...
63+
]
64+
```
65+
66+
Note that you may omit "readonly" on entities where it is not necessary. This
67+
attribute is acceptable wherever JSON entities are passed, e.g. .tokenInput("add")
68+
(see Methods section below).
69+
70+
### Include and initialize the plugin
71+
72+
Include jQuery and Tokeninput Javascript and stylesheet files on your page, and
73+
attach to your text input:
74+
Tokeninput stylesheet:
75+
76+
```html
77+
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
78+
<script type="text/javascript" src="yourfiles/jquery.tokeninput.js"></script>
79+
<link rel="stylesheet" type="text/css" href="yourfiles/token-input.css" />
80+
81+
<script type="text/javascript">
82+
$(document).ready(function () {
83+
$("#my-text-input").tokenInput("/url/to/your/script/");
84+
});
85+
</script>
86+
```
87+
88+
## Configuration
89+
90+
The tokeninput takes an optional second parameter on intitialization which
91+
allows you to customize the appearance and behaviour of the script, as well as
92+
add your own callbacks to intercept certain events. The following options are
93+
available:
94+
95+
### Search Settings
96+
97+
method
98+
: The HTTP method (eg. GET, POST) to use for the server request. *default:
99+
"GET"*.
100+
101+
queryParam
102+
: The name of the query param which you expect to contain the search term
103+
on the server-side. *default: "q"*.
104+
105+
searchDelay
106+
: The delay, in milliseconds, between the user finishing typing and the
107+
search being performed. *default: 300*
108+
109+
minChars
110+
: The minimum number of characters the user must enter before a search is
111+
performed. *default: 1*
112+
113+
propertyToSearch
114+
: The javascript/json object attribute to search.
115+
*default: "name"*
116+
117+
jsonContainer
118+
: The name of the json object in the response which contains the search
119+
results. This is typically used when your endpoint returns other data in
120+
addition to your search results.
121+
Use `null` to use the top level response object. *default: null*.
122+
123+
crossDomain
124+
: Force JSONP cross-domain communication to the server instead of a normal
125+
ajax request. Note: JSONP is automatically enabled if we detect the search
126+
request is a cross-domain request. *default: false*.
127+
128+
### Pre-population Settings
129+
130+
prePopulate
131+
: Prepopulate the tokeninput with existing data. Set to an array of JSON
132+
objects, eg: `[{id: 3, name: "test"}, {id: 5, name: "awesome"}]`
133+
to pre-fill the input. *default: null*
134+
135+
### Display Settings
136+
137+
hintText
138+
: The text to show in the dropdown label which appears when you first click
139+
in the search field. *default: "Type in a search term"*
140+
141+
noResultsText
142+
: The text to show in the dropdown label when no results are found which
143+
match the current query. *default: "No results"*
144+
145+
searchingText
146+
: The text to show in the dropdown label when a search is currently in
147+
progress. *default: "Searching..."*
148+
149+
deleteText
150+
: The text to show on each token which deletes the token when clicked. If
151+
you wish to hide the delete link, provide an empty string here.
152+
Alternatively you can provide a html string here if you would like to
153+
show an image for deleting tokens.
154+
*default: &times;*
155+
156+
animateDropdown
157+
: Set this to `false` to disable animation of the dropdown *default: true*
158+
159+
theme
160+
: Set this to a string, eg "facebook" when including theme css files to set
161+
the css class suffix
162+
163+
resultsLimit
164+
: The maximum number of results shown in the drop down. Use `null` to show
165+
all the matching results. *default: null*
166+
167+
resultsFormatter
168+
: A function that returns an interpolated HTML string for each result. Use
169+
this function with a templating system of your choice, such as jresig
170+
microtemplates or mustache.js. Use this when you want to include images or
171+
multiline formatted results
172+
*default: `function(item){ return "<li>" + item.propertyToSearch + "</li>" }`*
173+
174+
tokenFormatter
175+
: A function that returns an interpolated HTML string for each token. Use
176+
this function with a templating system of your choice, such as jresig
177+
microtemplates or mustache.js. Use this when you want to include images or
178+
multiline formatted tokens. Quora's people invite token field that returns
179+
avatar tokens is a good example of what can be done this option.
180+
*default: `function(item){ return "<li><p>" + item.propertyToSearch + "</p></li>" }`*
181+
182+
### Tokenization Settings
183+
184+
tokenLimit
185+
: The maximum number of results allowed to be selected by the user. Use
186+
`null` to allow unlimited selections. *default: null*
187+
188+
tokenDelimiter
189+
: The separator to use when sending the results back to the server.
190+
*default: ","*.
191+
192+
preventDuplicates
193+
: Prevent user from selecting duplicate values by setting this to `true`.
194+
*default: false*
195+
196+
tokenValue
197+
: The value of the token input when the input is submitted. Set it to `id`
198+
in order to get a concatenation of token IDs, or to `name` in order to
199+
get a concatenation of names. *default: id*
200+
201+
### Callbacks
202+
203+
onResult
204+
: A function to call whenever we receive results back from the server. You
205+
can use this function to pre-process results from the server before they
206+
are displayed to the user. *default: null*
207+
208+
onAdd
209+
: A function to call whenever the user adds another token to their
210+
selections. *defaut: null*
211+
212+
onDelete
213+
: A function to call whenever the user removes a token from their selections.
214+
*default: null*
215+
216+
onReady
217+
: A function to call after initialization is done and the tokeninput is ready
218+
to use. *default: null*
219+
220+
## Methods
221+
222+
`selector.tokenInput("add", {id: x, name: y});`
223+
: Add a new token to the tokeninput with id `x` and name `y`.
224+
225+
`selector.tokenInput("remove", {id: x});`
226+
: Remove the tokens with id `x` from the tokeninput.
227+
228+
`selector.tokenInput("remove", {name: y});`
229+
: Remove the tokens with name `y` from the tokeninput.
230+
231+
`selector.tokenInput("clear");`
232+
: Clear all tokens from the tokeninput.
233+
234+
`selector.tokenInput("get");`
235+
: Gets the array of selected tokens from the tokeninput (each item being an object of the kind `{id: x, name: y}`).
236+
237+
## Reporting Bugs or Feature Requests
238+
239+
Please report any bugs or feature requests on the github issues page for this
240+
project here:
241+
242+
<https://github.com/loopj/jquery-tokeninput/issues>
243+
244+
## License
245+
246+
Tokeninput is released under a dual license. You can choose either the GPL or
247+
MIT license depending on the project you are using it in and how you wish to
248+
use it.

facebook-style.png

8.14 KB
Loading

list-style.png

6.92 KB
Loading

0 commit comments

Comments
 (0)