scratch – Blame information for rev 125

Subversion Repositories:
Rev:
Rev Author Line No. Line
125 office 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>Bootstrap Tags Input</title>
5 <meta name="robots" content="index, follow" />
6 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
7  
8 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css">
9 <link rel="stylesheet" href="../dist/bootstrap-tagsinput.css">
10 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/themes/github.css">
11 <link rel="stylesheet" href="http://getbootstrap.com/2.3.2/assets/css/docs.css">
12 <link rel="stylesheet" href="assets/app.css">
13 <style>
14 .accordion { margin-top:-19px; }
15 </style>
16 <script>
17 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
18 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
19 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
20 })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
21 ga('create', 'UA-42755476-1', 'timschlechter.github.io');
22 ga('send', 'pageview');
23 </script>
24 </head>
25 <body>
26 <div id="fb-root"></div>
27 <div class="navbar navbar-inverse navbar-fixed-top bs-docs-nav">
28 <div class="navbar-inner">
29 <div class="container">
30 <div class="nav-collapse collapse bs-navbar-collapse">
31 <ul class="nav navbar-nav">
32 <li>
33 <a href="https://github.com/timschlechter/bootstrap-tagsinput">Code on Github</a>
34 </li>
35 <li>
36 <a href=".">Bootstrap 3</a>
37 </li>
38 <li>
39 <a href="http://timschlechter.github.io/bootstrap-tagsinput/dist/bootstrap-tagsinput.zip">Download <small>(latest)</small></a>
40 </li>
41 </ul>
42 <p class="navbar-text pull-right">
43 <a href="https://twitter.com/share" class="navbar-link twitter-share-button"
44 data-hashtags="bootstraptagsinput">Tweet</a>
45 <script>!function (d, s, id) {
46 var js, fjs = d.getElementsByTagName(s)[0];
47 if (!d.getElementById(id)) {
48 js = d.createElement(s);
49 js.id = id;
50 js.src = "//platform.twitter.com/widgets.js";
51 fjs.parentNode.insertBefore(js, fjs);
52 }
53 }(document, "script", "twitter-wjs");</script>
54  
55 <!-- Place this tag where you want the +1 button to render. -->
56 <a class="navbar-link g-plusone" data-size="medium"></a>
57  
58 <!-- Place this tag after the last +1 button tag. -->
59 <script type="text/javascript">
60 (function () {
61 var po = document.createElement('script');
62 po.type = 'text/javascript';
63 po.async = true;
64 po.src = 'https://apis.google.com/js/plusone.js';
65 var s = document.getElementsByTagName('script')[0];
66 s.parentNode.insertBefore(po, s);
67 })();
68 </script>
69 <script>(function(d, s, id) {
70 var js, fjs = d.getElementsByTagName(s)[0];
71 if (d.getElementById(id)) return;
72 js = d.createElement(s); js.id = id;
73 js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=122064240555";
74 fjs.parentNode.insertBefore(js, fjs);
75 }(document, 'script', 'facebook-jssdk'));</script>
76 <a class="navbar-link fb-like" data-href="http://timschlechter.github.io/bootstrap-tagsinput/examples/" data-width="110" data-layout="button_count" data-show-faces="true" data-send="false"></a>
77 </p>
78 </div>
79 </div>
80 </div>
81 </div>
82 <header class="jumbotron subhead">
83 <div class="container">
84 <h1>Bootstrap Tags Input</h1>
85 <p>jQuery plugin providing a Twitter Bootstrap user interface for managing tags</p>
86 </header>
87 <div class="container">
88 <section id="examples">
89 <div class="page-header">
90 <h2>Examples</h2>
91 </div>
92  
93 <div class="example example_markup">
94 <h3>Markup</h3>
95 <p>
96 Just add <code>data-role="tagsinput"</code> to your input field to automatically change it to a tags input field.
97 </p>
98 <div class="bs-docs-example">
99 <input type="text" value="Amsterdam,Washington,Sydney,Beijing,Cairo" data-role="tagsinput" placeholder="Add tags" />
100 </div>
101 <div class="accordion">
102 <div class="accordion-group">
103 <div class="accordion-heading">
104 <a class="accordion-toggle" data-toggle="collapse" href="#accordion_example_markup">
105 Show code
106 </a>
107 </div>
108 <div id="accordion_example_markup" class="accordion-body collapse">
109 <div class="accordion-inner">
110 <pre><code data-language="html">&lt;input type=&quot;text&quot; value=&quot;Amsterdam,Washington,Sydney,Beijing,Cairo&quot; data-role=&quot;tagsinput&quot; placeholder=&quot;Add tags&quot; /&gt;</code></pre>
111 </div>
112 </div>
113 </div>
114 </div>
115 <table class="table table-bordered table-condensed"><thead><tr><th>statement</th><th>returns</th></tr></thead><tbody><tr><td><code>$("input").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr><tr><td><code>$("input").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr></tbody></table>
116 </div>
117  
118 <div class="example example_multivalue">
119 <h3>True multi value</h3>
120 <p>
121 Use a <code>&lt;select multiple /&gt;</code> as your input element for a tags input, to gain true multivalue support. Instead of a comma separated string, the values will be set in an array. Existing <code>&lt;option /&gt;</code> elements will automatically be set as tags. This makes it also possible to create tags containing a comma.
122 </p>
123 <div class="bs-docs-example">
124 <select multiple data-role="tagsinput">
125 <option value="Amsterdam">Amsterdam</option>
126 <option value="Washington">Washington</option>
127 <option value="Sydney">Sydney</option>
128 <option value="Beijing">Beijing</option>
129 <option value="Cairo">Cairo</option>
130 </select>
131 </div>
132 <div class="accordion ">
133 <div class="accordion-group">
134 <div class="accordion-heading">
135 <a class="accordion-toggle" data-toggle="collapse" href="#example_multivalue">
136 Show code
137 </a>
138 </div>
139 <div id="example_multivalue" class="accordion-body collapse">
140 <div class="accordion-inner">
141 <pre><code data-language="html">&lt;select multiple data-role="tagsinput"&gt;
142 &lt;option value="Amsterdam"&gt;Amsterdam&lt;/option&gt;
143 &lt;option value="Washington"&gt;Washington&lt;/option&gt;
144 &lt;option value="Sydney"&gt;Sydney&lt;/option&gt;
145 &lt;option value="Beijing"&gt;Beijing&lt;/option&gt;
146 &lt;option value="Cairo"&gt;Cairo&lt;/option&gt;
147 &lt;/select&gt;</code></pre>
148 </div>
149 </div>
150 </div>
151 </div>
152 <table class="table table-bordered table-condensed"><thead><tr><th>statement</th><th>returns</th></tr></thead><tbody><tr><td><code>$("select").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr><tr><td><code>$("select").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr></tbody></table>
153 </div>
154  
155 <div class="example example_typeahead">
156 <h3>Typeahead</h3>
157 <div class="bs-docs-example">
158 <input type="text" value="Amsterdam,Washington" />
159 </div>
160 <div class="accordion ">
161 <div class="accordion-group">
162 <div class="accordion-heading">
163 <a class="accordion-toggle" data-toggle="collapse"href="#example_typeahead">
164 Show code
165 </a>
166 </div>
167 <div id="example_typeahead" class="accordion-body collapse">
168 <div class="accordion-inner">
169 <pre><code data-language="html">&lt;input type=&quot;text&quot; value=&quot;Amsterdam,Washington&quot; data-role=&quot;tagsinput&quot; /&gt;
170 &lt;script&gt;
171 $('input').tagsinput({
172 typeahead: {
173 source: function(query) {
174 return $.getJSON('citynames.json');
175 }
176 }
177 });
178 &lt;/script&gt;</code></pre>
179 </div>
180 </div>
181 </div>
182 </div>
183 <table class="table table-bordered table-condensed"><thead><tr><th>statement</th><th>returns</th></tr></thead><tbody><tr><td><code>$("input").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr><tr><td><code>$("input").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr></tbody></table>
184 </div>
185  
186 <div class="example example_objects_as_tags">
187 <h3>Objects as tags</h3>
188 <p>
189 Instead of just adding strings as tags, bind objects to your tags. This makes it possible to set id values in your input field's value, instead of just the tag's text.
190 </p>
191 <div class="bs-docs-example">
192 <input type="text" />
193 </div>
194 <div class="accordion">
195 <div class="accordion-group">
196 <div class="accordion-heading">
197 <a class="accordion-toggle" data-toggle="collapse" href="#accordion_example_objects_as_tags">
198 Show code
199 </a>
200 </div>
201 <div id="accordion_example_objects_as_tags" class="accordion-body collapse">
202 <div class="accordion-inner">
203 <pre><code data-language="html">&lt;input type=&quot;text&quot; /&gt;
204 &lt;script&gt;
205 $('input').tagsinput({
206 itemValue: 'value',
207 itemText: 'text',
208 typeahead: {
209 source: function(query) {
210 return $.getJSON('cities.json');
211 }
212 }
213 });
214  
215 $('input').tagsinput('add', { "value": 1 , "text": "Amsterdam" });
216 $('input').tagsinput('add', { "value": 4 , "text": "Washington" });
217 $('input').tagsinput('add', { "value": 7 , "text": "Sydney" });
218 $('input').tagsinput('add', { "value": 10, "text": "Beijing" });
219 $('input').tagsinput('add', { "value": 13, "text": "Cairo" });
220 &lt;/script&gt;</code></pre>
221 </div>
222 </div>
223 </div>
224 </div>
225 <table class="table table-bordered table-condensed"><thead><tr><th>statement</th><th>returns</th></tr></thead><tbody><tr><td><code>$("input").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr><tr><td><code>$("input").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr></tbody></table>
226 </div>
227  
228 <div class="example example_tagclass">
229 <h3>Categorizing tags</h3>
230 <p>
231 You can set a fixed css class for your tags, or determine dynamically by providing a custom function.
232 </p>
233 <div class="bs-docs-example">
234 <input type="text" />
235 </div>
236 <div class="accordion">
237 <div class="accordion-group">
238 <div class="accordion-heading">
239 <a class="accordion-toggle" data-toggle="collapse" href="#accordion_example_tagclass">
240 Show code
241 </a>
242 </div>
243 <div id="accordion_example_tagclass" class="accordion-body collapse">
244 <div class="accordion-inner">
245 <pre><code data-language="html">&lt;input type=&quot;text&quot; /&gt;
246 &lt;script&gt;
247 $('input').tagsinput({
248 tagClass: function(item) {
249 switch (item.continent) {
250 case 'Europe' : return 'label label-info';
251 case 'America' : return 'label label-important';
252 case 'Australia': return 'label label-success';
253 case 'Africa' : return 'badge badge-inverse';
254 case 'Asia' : return 'badge badge-warning';
255 }
256 },
257 itemValue: 'value',
258 itemText: 'text',
259 typeahead: {
260 source: function(query) {
261 return $.getJSON('cities.json');
262 }
263 }
264 });
265  
266 $('input').tagsinput('add', { "value": 1 , "text": "Amsterdam" , "continent": "Europe" });
267 $('input').tagsinput('add', { "value": 4 , "text": "Washington" , "continent": "America" });
268 $('input').tagsinput('add', { "value": 7 , "text": "Sydney" , "continent": "Australia" });
269 $('input').tagsinput('add', { "value": 10, "text": "Beijing" , "continent": "Asia" });
270 $('input').tagsinput('add', { "value": 13, "text": "Cairo" , "continent": "Africa" });
271 &lt;/script&gt;</code></pre>
272 </div>
273 </div>
274 </div>
275 </div>
276 <table class="table table-bordered table-condensed"><thead><tr><th>statement</th><th>returns</th></tr></thead><tbody><tr><td><code>$("input").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr><tr><td><code>$("input").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr></tbody></table>
277 </div>
278  
279 <div id="angular" class="example example_angular" ng-app="AngularExample" ng-controller="CityTagsInputController">
280 <h3>AngularJS support</h3>
281 <p>
282 Include <code>bootstrap-tagsinput-angular.js</code> and register the 'bootstrap-tagsinput' in your Angular JS application to use the bootstrap-tagsinput directive.
283 </p>
284 <div class="bs-docs-example">
285 <bootstrap-tagsinput
286 ng-model="cities"
287 typeahead-source="queryCities"
288 tagclass="getTagClass"
289 itemvalue="value"
290 itemtext="text">
291 </bootstrap-tagsinput>
292 </div>
293 <div class="accordion">
294 <div class="accordion-group">
295 <div class="accordion-heading">
296 <a class="accordion-toggle" data-toggle="collapse" href="#example_angular">
297 Show code
298 </a>
299 </div>
300 <div id="example_angular" class="accordion-body collapse">
301 <div class="accordion-inner">
302 <pre><code data-language="html">&lt;bootstrap-tagsinput
303 ng-model="cities"
304 typeahead-source="queryCities"
305 tagclass="getTagClass"
306 itemvalue="value"
307 itemtext="text"&gt;
308 &lt;/bootstrap-tagsinput&gt;
309  
310 &lt;script&gt;
311 angular.module('AngularExample', ['bootstrap-tagsinput'])
312 .controller('CityTagsInputController',
313 function CityTagsInputController($scope) {
314 // Init with some cities
315 $scope.cities = [
316 { "value": 1 , "text": "Amsterdam" , "continent": "Europe" },
317 { "value": 4 , "text": "Washington" , "continent": "America" },
318 { "value": 7 , "text": "Sydney" , "continent": "Australia" },
319 { "value": 10, "text": "Beijing" , "continent": "Asia" },
320 { "value": 13, "text": "Cairo" , "continent": "Africa" }
321 ];
322  
323 $scope.queryCities = function(query) {
324 return $http.get('cities.json');
325 };
326  
327 $scope.getTagClass = function(city) {
328 switch (city.continent) {
329 case 'Europe' : return 'badge badge-info';
330 case 'America' : return 'label label-important';
331 case 'Australia': return 'badge badge-success';
332 case 'Africa' : return 'label label-inverse';
333 case 'Asia' : return 'badge badge-warning';
334 }
335 };
336 }
337 );
338 &lt;/script&gt;</code></pre>
339 </div>
340 </div>
341 </div>
342 </div>
343 <table class="table table-bordered table-condensed">
344 <thead>
345 <tr><th>statement</th><th>returns</th></tr>
346 </thead>
347 <tbody>
348 <tr><td><code>$scope.cities</code></td><td><pre><code data-language="javascript">{{cities}}</code></pre></td></tr>
349 <tr><td><code>$("select").val()</code></td><td><pre class="val"><code data-language="javascript"></code></pre></td></tr>
350 <tr><td><code>$("select").tagsinput('items')</code></td><td><pre class="items"><code data-language="javascript"></code></pre></td></tr>
351 </tbody>
352 </table>
353 </div>
354 </section>
355  
356 <section id="options">
357 <div class="page-header">
358 <h2>Options</h2>
359 </div>
360 <table class="table table-bordered table-condensed">
361 <thead>
362 <tr>
363 <th colspan="2">option</th>
364 <th>description</th>
365 </tr>
366 </thead>
367 <tbody>
368 <tr>
369 <td colspan="2"><code>tagClass</code></td>
370 <td>
371 <p>Classname for the tags, or a function returning a classname</p>
372 <pre><code data-language="javascript">$('input').tagsinput({
373 tagClass: 'big'
374 });</code></pre>
375 <pre><code data-language="javascript">$('input').tagsinput({
376 tagClass: function(item) {
377 return (item.length > 10 ? 'big' : 'small');
378 }
379 });</code></pre>
380 </td>
381 </tr>
382 <tr>
383 <td colspan="2"><code>itemValue</code></td>
384 <td>
385 <p>When adding objects as tags, itemValue <em>must</em> be set to the name of the property containing the item's value, or a function returning an item's value.</p>
386 <pre><code data-language="javascript">$('input').tagsinput({
387 itemValue: 'id'
388 });</code></pre>
389 <pre><code data-language="javascript">$('input').tagsinput({
390 itemValue: function(item) {
391 return item.id;
392 }
393 });</code></pre>
394 </td>
395 </tr>
396 <tr>
397 <td colspan="2"><code>itemText</code></td>
398 <td>
399 <p>When adding objects as tags, you can set itemText to the name of the property of item to use for a its tag's text. You may also provide a function which returns an item's value. When this options is not set, the value of <code>itemValue</code> will be used.
400  
401  
402 <pre><code data-language="javascript">$('input').tagsinput({
403 itemText: 'label'
404 });</code></pre>
405 <pre><code data-language="javascript">$('input').tagsinput({
406 itemText: function(item) {
407 return item.label;
408 }
409 });</code></pre>
410 </td>
411 </tr>
412 <tr>
413 <td colspan="2"><code>confirmKeys</code></td>
414 <td>
415 <p>Array of keycodes which will add a tag when typing in the input. (default: [13, 188], which are ENTER and comma)</p>
416 <pre><code data-language="javascript">$('input').tagsinput({
417 confirmKeys: [13, 44]
418 });</code></pre>
419 </td>
420 </tr>
421 <tr>
422 <td colspan="2"><code>maxTags</code></td>
423 <td>
424 <p>When set, no more than the given number of tags are allowed to add (default: undefined). When maxTags is reached, a class 'bootstrap-tagsinput-max' is placed on the tagsinput element. (default: undefined)</p>
425 <pre><code data-language="javascript">$('input').tagsinput({
426 maxTags: 3
427 });</code></pre>
428 </td>
429 </tr>
430 <tr>
431 <td colspan="2"><code>maxChars</code></td>
432 <td>
433 <p>Defines the maximum length of a single tag. (default: undefined)</p>
434 <pre><code data-language="javascript">$('input').tagsinput({
435 maxChars: 8
436 });</code></pre>
437 </td>
438 </tr>
439 <tr>
440 <td colspan="2"><code>trimValue</code></td>
441 <td>
442 <p>When true, automatically removes all whitespace around tags. (default: false)</p>
443 <pre><code data-language="javascript">$('input').tagsinput({
444 trimValue: true
445 });</code></pre>
446 </td>
447 </tr>
448 <tr>
449 <td colspan="2"><code>allowDuplicates</code></td>
450 <td>
451 <p>When true, the same tag can be added multiple times. (default: false)</p>
452 <pre><code data-language="javascript">$('input').tagsinput({
453 allowDuplicates: true
454 });</code></pre>
455 </td>
456 </tr>
457 <tr>
458 <td colspan="2"><code>maxChars</code></td>
459 <td>
460 <p>Defines the maximum length of a single tag.</p>
461 <pre><code data-language="javascript">$('input').tagsinput({
462 maxChars: 8
463 });</code></pre>
464 </td>
465 </tr>
466 <tr>
467 <td colspan="2"><code>freeInput</code></td>
468 <td>
469 <p>Allow creating tags which are not returned by typeahead's source (default: true)</p>
470 <div class="alert alert-block">
471 This is only possible when using string as tags. When itemValue option is set, this option will be ignored.
472 </div>
473 <pre><code data-language="javascript">$('input').tagsinput({
474 typeahead: {
475 source: ['Amsterdam', 'Washington', 'Sydney', 'Beijing', 'Cairo'],
476 freeInput: true
477 }
478 });</code></pre>
479 </td>
480 </tr>
481 <tr>
482 <td colspan="2"><code>typeahead</code></td>
483 <td><p>Object containing typeahead specific options</td>
484 </tr>
485 </tr>
486 <tr>
487 <td></td>
488 <td><code>source</code></td>
489 <td>
490 <p>An array (or function returning a promise or array), which will be used as source for a typeahead.
491 <pre><code data-language="javascript">$('input').tagsinput({
492 typeahead: {
493 source: ['Amsterdam', 'Washington', 'Sydney', 'Beijing', 'Cairo']
494 }
495 });</code></pre>
496 <pre><code data-language="javascript">$('input').tagsinput({
497 typeahead: {
498 source: function(query) {
499 return $.get('http://someservice.com');
500 }
501 }
502 });</code></pre>
503 </td>
504 </tr>
505 <tr>
506 <td colspan="2"><code>onTagExists</code></td>
507 <td><p>Function invoked when trying to add an item which allready exists. By default, the existing tag hides and fades in.
508 <pre><code data-language="javascript">$('input').tagsinput({
509 onTagExists: function(item, $tag) {
510 $tag.hide.fadeIn();
511 }
512 });</code></pre>
513 </td>
514 </tr>
515 </tbody>
516 </table>
517 </section>
518  
519 <section id="methods">
520 <div class="page-header">
521 <h2>Methods</h2>
522 </div>
523 <table class="table table-bordered table-condensed">
524 <thead>
525 <tr>
526 <th>method</th>
527 <th>description</th>
528 </tr>
529 </thead>
530 <tbody>
531 <tr>
532 <td><code>add</code></td>
533 <td>
534 <p>Adds a tag</p>
535  
536 <pre><code data-language="javascript">$('input').tagsinput('add', 'some tag');</code></pre>
537  
538 <pre><code data-language="javascript">$('input').tagsinput('add', { id: 1, text: 'some tag' });</code></pre>
539 </td>
540 </tr>
541 <tr>
542 <td><code>remove</code></td>
543 <td>
544 <p>Removes a tag</p>
545  
546 <pre><code data-language="javascript">$('input').tagsinput('remove', 'some tag');</code></pre>
547  
548 <pre><code data-language="javascript">$('input').tagsinput('remove', { id: 1, text: 'some tag' });</code></pre>
549 </td>
550 </tr>
551 <tr>
552 <td><code>removeAll</code></td>
553 <td>
554 <p>Removes all tags</p>
555  
556 <pre><code data-language="javascript">$('input').tagsinput('removeAll');</code></pre>
557 </td>
558 </tr>
559 <tr>
560 <td><code>focus</code></td>
561 <td>
562 <p>Sets focus in the tagsinput</p>
563  
564 <pre><code data-language="javascript">$('input').tagsinput('focus');</code></pre>
565 </td>
566 </tr>
567 <tr>
568 <td><code>input</code></td>
569 <td>
570 <p>Returns the tagsinput's internal &lt;input /&gt;, which is used for adding tags. You could use this to add your own typeahead behaviour for example.</p>
571  
572  
573 <pre><code data-language="html">var $elt = $('input').tagsinput('input');</code></pre>
574 </td>
575 </tr>
576 <tr>
577 <td><code>refresh</code></td>
578 <td>
579 <p>Refreshes the tags input UI. This might be usefull when you're adding objects as tags. When an object's text changes, you'll have to refresh to update the matching tag's text.</p>
580  
581 <pre><code data-language="javascript">$('input').tagsinput('refresh');</code></pre>
582 </td>
583 </tr>
584 <tr>
585 <td><code>destroy</code></td>
586 <td>
587 <p>Removes tagsinput behaviour</p>
588  
589 <pre><code data-language="javascript">$('input').tagsinput('destroy');</code></pre>
590 </td>
591 </tr>
592 </tbody>
593 </table>
594 </section>
595  
596 <section id="methods">
597 <div class="page-header">
598 <h2>Events</h2>
599 </div>
600 <table class="table table-bordered table-condensed">
601 <thead>
602 <tr>
603 <th>event</th>
604 <th>description</th>
605 </tr>
606 </thead>
607 <tbody>
608 <tr>
609 <td><code>beforeItemAdd</code></td>
610 <td>
611 Triggered just before an item gets added. Example:
612 <pre><code data-language="javascript">$('input').on('beforeItemAdd', function(event) {
613 // event.item: contains the item
614 // event.cancel: set to true to prevent the item getting added
615 });</code></pre>
616 </td>
617 </tr>
618 <tr>
619 <td><code>itemAdded</code></td>
620 <td>
621 Triggered just after an item got added. Example:
622 <pre><code data-language="javascript">$('input').on('itemAdded', function(event) {
623 // event.item: contains the item
624 });</code></pre>
625 </td>
626 </tr>
627 <tr>
628 <td><code>beforeItemRemove</code></td>
629 <td>
630 Triggered just before an item gets removed. Example:
631 <pre><code data-language="javascript">$('input').on('beforeItemRemove', function(event) {
632 // event.item: contains the item
633 // event.cancel: set to true to prevent the item getting removed
634 });</code></pre>
635 </td>
636 </tr>
637 <tr>
638 <td><code>itemRemoved</code></td>
639 <td>
640 Triggered just after an item got removed. Example:
641 <pre><code data-language="javascript">$('input').on('itemRemoved', function(event) {
642 // event.item: contains the item
643 });</code></pre>
644 </td>
645 </tr>
646 </tbody>
647 </table>
648 </section>
649 </div>
650 <footer class="footer">
651 <p>Code licensed under <a href="https://raw.github.com/TimSchlechter/bootstrap-tagsinput/master/LICENSE" target="_blank">MIT License</a></p>
652 </footer>
653  
654 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
655 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
656 <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.20/angular.min.js"></script>
657 <script src="../dist/bootstrap-tagsinput.min.js"></script>
658 <script src="../dist/bootstrap-tagsinput/bootstrap-tagsinput-angular.min.js"></script>
659 <script src="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/js/rainbow.min.js"></script>
660 <script src="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/js/language/generic.js"></script>
661 <script src="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/js/language/html.js"></script>
662 <script src="https://cdnjs.cloudflare.com/ajax/libs/rainbow/1.2.0/js/language/javascript.js"></script>
663 <script src="assets/app_bs2.js"></script>
664 <script src="assets/app.js"></script>
665 </body>
666 </html>