annotate src/main/webapp/imageServer/resources/js/jquery-ui-1.10.4/demos/autocomplete/combobox.html @ 7:764f47286679

(none)
author jurzua
date Wed, 29 Oct 2014 14:28:34 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
jurzua
parents:
diff changeset
1 <!doctype html>
jurzua
parents:
diff changeset
2 <html lang="en">
jurzua
parents:
diff changeset
3 <head>
jurzua
parents:
diff changeset
4 <meta charset="utf-8">
jurzua
parents:
diff changeset
5 <title>jQuery UI Autocomplete - Combobox</title>
jurzua
parents:
diff changeset
6 <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
jurzua
parents:
diff changeset
7 <script src="../../jquery-1.10.2.js"></script>
jurzua
parents:
diff changeset
8 <script src="../../ui/jquery.ui.core.js"></script>
jurzua
parents:
diff changeset
9 <script src="../../ui/jquery.ui.widget.js"></script>
jurzua
parents:
diff changeset
10 <script src="../../ui/jquery.ui.button.js"></script>
jurzua
parents:
diff changeset
11 <script src="../../ui/jquery.ui.position.js"></script>
jurzua
parents:
diff changeset
12 <script src="../../ui/jquery.ui.menu.js"></script>
jurzua
parents:
diff changeset
13 <script src="../../ui/jquery.ui.autocomplete.js"></script>
jurzua
parents:
diff changeset
14 <script src="../../ui/jquery.ui.tooltip.js"></script>
jurzua
parents:
diff changeset
15 <link rel="stylesheet" href="../demos.css">
jurzua
parents:
diff changeset
16 <style>
jurzua
parents:
diff changeset
17 .custom-combobox {
jurzua
parents:
diff changeset
18 position: relative;
jurzua
parents:
diff changeset
19 display: inline-block;
jurzua
parents:
diff changeset
20 }
jurzua
parents:
diff changeset
21 .custom-combobox-toggle {
jurzua
parents:
diff changeset
22 position: absolute;
jurzua
parents:
diff changeset
23 top: 0;
jurzua
parents:
diff changeset
24 bottom: 0;
jurzua
parents:
diff changeset
25 margin-left: -1px;
jurzua
parents:
diff changeset
26 padding: 0;
jurzua
parents:
diff changeset
27 /* support: IE7 */
jurzua
parents:
diff changeset
28 *height: 1.7em;
jurzua
parents:
diff changeset
29 *top: 0.1em;
jurzua
parents:
diff changeset
30 }
jurzua
parents:
diff changeset
31 .custom-combobox-input {
jurzua
parents:
diff changeset
32 margin: 0;
jurzua
parents:
diff changeset
33 padding: 0.3em;
jurzua
parents:
diff changeset
34 }
jurzua
parents:
diff changeset
35 </style>
jurzua
parents:
diff changeset
36 <script>
jurzua
parents:
diff changeset
37 (function( $ ) {
jurzua
parents:
diff changeset
38 $.widget( "custom.combobox", {
jurzua
parents:
diff changeset
39 _create: function() {
jurzua
parents:
diff changeset
40 this.wrapper = $( "<span>" )
jurzua
parents:
diff changeset
41 .addClass( "custom-combobox" )
jurzua
parents:
diff changeset
42 .insertAfter( this.element );
jurzua
parents:
diff changeset
43
jurzua
parents:
diff changeset
44 this.element.hide();
jurzua
parents:
diff changeset
45 this._createAutocomplete();
jurzua
parents:
diff changeset
46 this._createShowAllButton();
jurzua
parents:
diff changeset
47 },
jurzua
parents:
diff changeset
48
jurzua
parents:
diff changeset
49 _createAutocomplete: function() {
jurzua
parents:
diff changeset
50 var selected = this.element.children( ":selected" ),
jurzua
parents:
diff changeset
51 value = selected.val() ? selected.text() : "";
jurzua
parents:
diff changeset
52
jurzua
parents:
diff changeset
53 this.input = $( "<input>" )
jurzua
parents:
diff changeset
54 .appendTo( this.wrapper )
jurzua
parents:
diff changeset
55 .val( value )
jurzua
parents:
diff changeset
56 .attr( "title", "" )
jurzua
parents:
diff changeset
57 .addClass( "custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left" )
jurzua
parents:
diff changeset
58 .autocomplete({
jurzua
parents:
diff changeset
59 delay: 0,
jurzua
parents:
diff changeset
60 minLength: 0,
jurzua
parents:
diff changeset
61 source: $.proxy( this, "_source" )
jurzua
parents:
diff changeset
62 })
jurzua
parents:
diff changeset
63 .tooltip({
jurzua
parents:
diff changeset
64 tooltipClass: "ui-state-highlight"
jurzua
parents:
diff changeset
65 });
jurzua
parents:
diff changeset
66
jurzua
parents:
diff changeset
67 this._on( this.input, {
jurzua
parents:
diff changeset
68 autocompleteselect: function( event, ui ) {
jurzua
parents:
diff changeset
69 ui.item.option.selected = true;
jurzua
parents:
diff changeset
70 this._trigger( "select", event, {
jurzua
parents:
diff changeset
71 item: ui.item.option
jurzua
parents:
diff changeset
72 });
jurzua
parents:
diff changeset
73 },
jurzua
parents:
diff changeset
74
jurzua
parents:
diff changeset
75 autocompletechange: "_removeIfInvalid"
jurzua
parents:
diff changeset
76 });
jurzua
parents:
diff changeset
77 },
jurzua
parents:
diff changeset
78
jurzua
parents:
diff changeset
79 _createShowAllButton: function() {
jurzua
parents:
diff changeset
80 var input = this.input,
jurzua
parents:
diff changeset
81 wasOpen = false;
jurzua
parents:
diff changeset
82
jurzua
parents:
diff changeset
83 $( "<a>" )
jurzua
parents:
diff changeset
84 .attr( "tabIndex", -1 )
jurzua
parents:
diff changeset
85 .attr( "title", "Show All Items" )
jurzua
parents:
diff changeset
86 .tooltip()
jurzua
parents:
diff changeset
87 .appendTo( this.wrapper )
jurzua
parents:
diff changeset
88 .button({
jurzua
parents:
diff changeset
89 icons: {
jurzua
parents:
diff changeset
90 primary: "ui-icon-triangle-1-s"
jurzua
parents:
diff changeset
91 },
jurzua
parents:
diff changeset
92 text: false
jurzua
parents:
diff changeset
93 })
jurzua
parents:
diff changeset
94 .removeClass( "ui-corner-all" )
jurzua
parents:
diff changeset
95 .addClass( "custom-combobox-toggle ui-corner-right" )
jurzua
parents:
diff changeset
96 .mousedown(function() {
jurzua
parents:
diff changeset
97 wasOpen = input.autocomplete( "widget" ).is( ":visible" );
jurzua
parents:
diff changeset
98 })
jurzua
parents:
diff changeset
99 .click(function() {
jurzua
parents:
diff changeset
100 input.focus();
jurzua
parents:
diff changeset
101
jurzua
parents:
diff changeset
102 // Close if already visible
jurzua
parents:
diff changeset
103 if ( wasOpen ) {
jurzua
parents:
diff changeset
104 return;
jurzua
parents:
diff changeset
105 }
jurzua
parents:
diff changeset
106
jurzua
parents:
diff changeset
107 // Pass empty string as value to search for, displaying all results
jurzua
parents:
diff changeset
108 input.autocomplete( "search", "" );
jurzua
parents:
diff changeset
109 });
jurzua
parents:
diff changeset
110 },
jurzua
parents:
diff changeset
111
jurzua
parents:
diff changeset
112 _source: function( request, response ) {
jurzua
parents:
diff changeset
113 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
jurzua
parents:
diff changeset
114 response( this.element.children( "option" ).map(function() {
jurzua
parents:
diff changeset
115 var text = $( this ).text();
jurzua
parents:
diff changeset
116 if ( this.value && ( !request.term || matcher.test(text) ) )
jurzua
parents:
diff changeset
117 return {
jurzua
parents:
diff changeset
118 label: text,
jurzua
parents:
diff changeset
119 value: text,
jurzua
parents:
diff changeset
120 option: this
jurzua
parents:
diff changeset
121 };
jurzua
parents:
diff changeset
122 }) );
jurzua
parents:
diff changeset
123 },
jurzua
parents:
diff changeset
124
jurzua
parents:
diff changeset
125 _removeIfInvalid: function( event, ui ) {
jurzua
parents:
diff changeset
126
jurzua
parents:
diff changeset
127 // Selected an item, nothing to do
jurzua
parents:
diff changeset
128 if ( ui.item ) {
jurzua
parents:
diff changeset
129 return;
jurzua
parents:
diff changeset
130 }
jurzua
parents:
diff changeset
131
jurzua
parents:
diff changeset
132 // Search for a match (case-insensitive)
jurzua
parents:
diff changeset
133 var value = this.input.val(),
jurzua
parents:
diff changeset
134 valueLowerCase = value.toLowerCase(),
jurzua
parents:
diff changeset
135 valid = false;
jurzua
parents:
diff changeset
136 this.element.children( "option" ).each(function() {
jurzua
parents:
diff changeset
137 if ( $( this ).text().toLowerCase() === valueLowerCase ) {
jurzua
parents:
diff changeset
138 this.selected = valid = true;
jurzua
parents:
diff changeset
139 return false;
jurzua
parents:
diff changeset
140 }
jurzua
parents:
diff changeset
141 });
jurzua
parents:
diff changeset
142
jurzua
parents:
diff changeset
143 // Found a match, nothing to do
jurzua
parents:
diff changeset
144 if ( valid ) {
jurzua
parents:
diff changeset
145 return;
jurzua
parents:
diff changeset
146 }
jurzua
parents:
diff changeset
147
jurzua
parents:
diff changeset
148 // Remove invalid value
jurzua
parents:
diff changeset
149 this.input
jurzua
parents:
diff changeset
150 .val( "" )
jurzua
parents:
diff changeset
151 .attr( "title", value + " didn't match any item" )
jurzua
parents:
diff changeset
152 .tooltip( "open" );
jurzua
parents:
diff changeset
153 this.element.val( "" );
jurzua
parents:
diff changeset
154 this._delay(function() {
jurzua
parents:
diff changeset
155 this.input.tooltip( "close" ).attr( "title", "" );
jurzua
parents:
diff changeset
156 }, 2500 );
jurzua
parents:
diff changeset
157 this.input.data( "ui-autocomplete" ).term = "";
jurzua
parents:
diff changeset
158 },
jurzua
parents:
diff changeset
159
jurzua
parents:
diff changeset
160 _destroy: function() {
jurzua
parents:
diff changeset
161 this.wrapper.remove();
jurzua
parents:
diff changeset
162 this.element.show();
jurzua
parents:
diff changeset
163 }
jurzua
parents:
diff changeset
164 });
jurzua
parents:
diff changeset
165 })( jQuery );
jurzua
parents:
diff changeset
166
jurzua
parents:
diff changeset
167 $(function() {
jurzua
parents:
diff changeset
168 $( "#combobox" ).combobox();
jurzua
parents:
diff changeset
169 $( "#toggle" ).click(function() {
jurzua
parents:
diff changeset
170 $( "#combobox" ).toggle();
jurzua
parents:
diff changeset
171 });
jurzua
parents:
diff changeset
172 });
jurzua
parents:
diff changeset
173 </script>
jurzua
parents:
diff changeset
174 </head>
jurzua
parents:
diff changeset
175 <body>
jurzua
parents:
diff changeset
176
jurzua
parents:
diff changeset
177 <div class="ui-widget">
jurzua
parents:
diff changeset
178 <label>Your preferred programming language: </label>
jurzua
parents:
diff changeset
179 <select id="combobox">
jurzua
parents:
diff changeset
180 <option value="">Select one...</option>
jurzua
parents:
diff changeset
181 <option value="ActionScript">ActionScript</option>
jurzua
parents:
diff changeset
182 <option value="AppleScript">AppleScript</option>
jurzua
parents:
diff changeset
183 <option value="Asp">Asp</option>
jurzua
parents:
diff changeset
184 <option value="BASIC">BASIC</option>
jurzua
parents:
diff changeset
185 <option value="C">C</option>
jurzua
parents:
diff changeset
186 <option value="C++">C++</option>
jurzua
parents:
diff changeset
187 <option value="Clojure">Clojure</option>
jurzua
parents:
diff changeset
188 <option value="COBOL">COBOL</option>
jurzua
parents:
diff changeset
189 <option value="ColdFusion">ColdFusion</option>
jurzua
parents:
diff changeset
190 <option value="Erlang">Erlang</option>
jurzua
parents:
diff changeset
191 <option value="Fortran">Fortran</option>
jurzua
parents:
diff changeset
192 <option value="Groovy">Groovy</option>
jurzua
parents:
diff changeset
193 <option value="Haskell">Haskell</option>
jurzua
parents:
diff changeset
194 <option value="Java">Java</option>
jurzua
parents:
diff changeset
195 <option value="JavaScript">JavaScript</option>
jurzua
parents:
diff changeset
196 <option value="Lisp">Lisp</option>
jurzua
parents:
diff changeset
197 <option value="Perl">Perl</option>
jurzua
parents:
diff changeset
198 <option value="PHP">PHP</option>
jurzua
parents:
diff changeset
199 <option value="Python">Python</option>
jurzua
parents:
diff changeset
200 <option value="Ruby">Ruby</option>
jurzua
parents:
diff changeset
201 <option value="Scala">Scala</option>
jurzua
parents:
diff changeset
202 <option value="Scheme">Scheme</option>
jurzua
parents:
diff changeset
203 </select>
jurzua
parents:
diff changeset
204 </div>
jurzua
parents:
diff changeset
205 <button id="toggle">Show underlying select</button>
jurzua
parents:
diff changeset
206
jurzua
parents:
diff changeset
207 <div class="demo-description">
jurzua
parents:
diff changeset
208 <p>A custom widget built by composition of Autocomplete and Button. You can either type something into the field to get filtered suggestions based on your input, or use the button to get the full list of selections.</p>
jurzua
parents:
diff changeset
209 <p>The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.</p>
jurzua
parents:
diff changeset
210 <p>This is not a supported or even complete widget. Its purely for demoing what autocomplete can do with a bit of customization. <a href="http://www.learningjquery.com/2010/06/a-jquery-ui-combobox-under-the-hood">For a detailed explanation of how the widget works, check out this Learning jQuery article.</a></p>
jurzua
parents:
diff changeset
211 </div>
jurzua
parents:
diff changeset
212 </body>
jurzua
parents:
diff changeset
213 </html>