annotate jquery-ui/development-bundle/demos/autocomplete/combobox.html @ 0:b2e4605f20b2

beta version
author dwinter
date Thu, 30 Jun 2011 09:07:49 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
1 <!DOCTYPE html>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
2 <html lang="en">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
3 <head>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
4 <meta charset="utf-8">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
5 <title>jQuery UI Autocomplete - Combobox</title>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
6 <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
7 <script src="../../jquery-1.5.1.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
8 <script src="../../ui/jquery.ui.core.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
9 <script src="../../ui/jquery.ui.widget.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
10 <script src="../../ui/jquery.ui.button.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
11 <script src="../../ui/jquery.ui.position.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
12 <script src="../../ui/jquery.ui.autocomplete.js"></script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
13 <link rel="stylesheet" href="../demos.css">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
14 <style>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
15 .ui-button { margin-left: -1px; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
16 .ui-button-icon-only .ui-button-text { padding: 0.35em; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
17 .ui-autocomplete-input { margin: 0; padding: 0.48em 0 0.47em 0.45em; }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
18 </style>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
19 <script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
20 (function( $ ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
21 $.widget( "ui.combobox", {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
22 _create: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
23 var self = this,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
24 select = this.element.hide(),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
25 selected = select.children( ":selected" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
26 value = selected.val() ? selected.text() : "";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
27 var input = this.input = $( "<input>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
28 .insertAfter( select )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
29 .val( value )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
30 .autocomplete({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
31 delay: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
32 minLength: 0,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
33 source: function( request, response ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
34 var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
35 response( select.children( "option" ).map(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
36 var text = $( this ).text();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
37 if ( this.value && ( !request.term || matcher.test(text) ) )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
38 return {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
39 label: text.replace(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
40 new RegExp(
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
41 "(?![^&;]+;)(?!<[^<>]*)(" +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
42 $.ui.autocomplete.escapeRegex(request.term) +
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
43 ")(?![^<>]*>)(?![^&;]+;)", "gi"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
44 ), "<strong>$1</strong>" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
45 value: text,
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
46 option: this
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
47 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
48 }) );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
49 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
50 select: function( event, ui ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
51 ui.item.option.selected = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
52 self._trigger( "selected", event, {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
53 item: ui.item.option
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
54 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
55 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
56 change: function( event, ui ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
57 if ( !ui.item ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
58 var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
59 valid = false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
60 select.children( "option" ).each(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
61 if ( $( this ).text().match( matcher ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
62 this.selected = valid = true;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
63 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
64 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
65 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
66 if ( !valid ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
67 // remove invalid value, as it didn't match anything
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
68 $( this ).val( "" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
69 select.val( "" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
70 input.data( "autocomplete" ).term = "";
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
71 return false;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
72 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
73 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
74 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
75 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
76 .addClass( "ui-widget ui-widget-content ui-corner-left" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
77
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
78 input.data( "autocomplete" )._renderItem = function( ul, item ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
79 return $( "<li></li>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
80 .data( "item.autocomplete", item )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
81 .append( "<a>" + item.label + "</a>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
82 .appendTo( ul );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
83 };
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
84
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
85 this.button = $( "<button type='button'>&nbsp;</button>" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
86 .attr( "tabIndex", -1 )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
87 .attr( "title", "Show All Items" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
88 .insertAfter( input )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
89 .button({
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
90 icons: {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
91 primary: "ui-icon-triangle-1-s"
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
92 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
93 text: false
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
94 })
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
95 .removeClass( "ui-corner-all" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
96 .addClass( "ui-corner-right ui-button-icon" )
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
97 .click(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
98 // close if already visible
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
99 if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
100 input.autocomplete( "close" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
101 return;
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
102 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
103
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
104 // pass empty string as value to search for, displaying all results
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
105 input.autocomplete( "search", "" );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
106 input.focus();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
107 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
108 },
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
109
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
110 destroy: function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
111 this.input.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
112 this.button.remove();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
113 this.element.show();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
114 $.Widget.prototype.destroy.call( this );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
115 }
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
116 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
117 })( jQuery );
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
118
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
119 $(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
120 $( "#combobox" ).combobox();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
121 $( "#toggle" ).click(function() {
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
122 $( "#combobox" ).toggle();
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
123 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
124 });
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
125 </script>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
126 </head>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
127 <body>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
128
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
129 <div class="demo">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
130
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
131 <div class="ui-widget">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
132 <label>Your preferred programming language: </label>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
133 <select id="combobox">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
134 <option value="">Select one...</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
135 <option value="ActionScript">ActionScript</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
136 <option value="AppleScript">AppleScript</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
137 <option value="Asp">Asp</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
138 <option value="BASIC">BASIC</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
139 <option value="C">C</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
140 <option value="C++">C++</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
141 <option value="Clojure">Clojure</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
142 <option value="COBOL">COBOL</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
143 <option value="ColdFusion">ColdFusion</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
144 <option value="Erlang">Erlang</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
145 <option value="Fortran">Fortran</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
146 <option value="Groovy">Groovy</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
147 <option value="Haskell">Haskell</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
148 <option value="Java">Java</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
149 <option value="JavaScript">JavaScript</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
150 <option value="Lisp">Lisp</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
151 <option value="Perl">Perl</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
152 <option value="PHP">PHP</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
153 <option value="Python">Python</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
154 <option value="Ruby">Ruby</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
155 <option value="Scala">Scala</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
156 <option value="Scheme">Scheme</option>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
157 </select>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
158 </div>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
159 <button id="toggle">Show underlying select</button>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
160
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
161 </div><!-- End demo -->
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
162
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
163
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
164
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
165 <div class="demo-description">
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
166 <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>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
167 <p>The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.</p>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
168 </div><!-- End demo-description -->
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
169
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
170 </body>
b2e4605f20b2 beta version
dwinter
parents:
diff changeset
171 </html>