summaryrefslogtreecommitdiff
path: root/src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html
diff options
context:
space:
mode:
authorLeif Johansson <leifj@sunet.se>2011-11-25 21:18:19 +0100
committerLeif Johansson <leifj@sunet.se>2011-11-25 21:18:19 +0100
commit3909e6d89e01e4cd8777377c63037896bb95aa2f (patch)
tree59679df287c2bee55087fb5afb8d42e7f93a44fb /src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html
parente5f94e9be5017f627c1ccd8c6306c5cc2e200432 (diff)
new jq layout
Diffstat (limited to 'src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html')
-rw-r--r--src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html b/src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html
new file mode 100644
index 0000000..aeaee5c
--- /dev/null
+++ b/src/main/webapp/jquery-ui-1.9pre/demos/autocomplete/combobox.html
@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>jQuery UI Autocomplete - Combobox</title>
+ <link rel="stylesheet" href="../../themes/base/jquery.ui.all.css">
+ <script src="../../jquery-1.7.1.js"></script>
+ <script src="../../ui/jquery.ui.core.js"></script>
+ <script src="../../ui/jquery.ui.widget.js"></script>
+ <script src="../../ui/jquery.ui.button.js"></script>
+ <script src="../../ui/jquery.ui.position.js"></script>
+ <script src="../../ui/jquery.ui.menu.js"></script>
+ <script src="../../ui/jquery.ui.autocomplete.js"></script>
+ <script src="../../ui/jquery.ui.tooltip.js"></script>
+ <link rel="stylesheet" href="../demos.css">
+ <style>
+ .ui-button {
+ margin-left: -1px;
+ }
+ .ui-button-icon-only .ui-button-text {
+ padding: 0.35em;
+ }
+ .ui-autocomplete-input {
+ margin: 0;
+ padding: 0.4em 0 0.4em 0.45em;
+ }
+ </style>
+ <script>
+ (function( $ ) {
+ $.widget( "ui.combobox", {
+ _create: function() {
+ var self = this,
+ select = this.element.hide(),
+ selected = select.children( ":selected" ),
+ value = selected.val() ? selected.text() : "";
+
+ function removeIfInvalid(element) {
+ var value = $( element ).val(),
+ matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( value ) + "$", "i" ),
+ valid = false;
+ select.children( "option" ).each(function() {
+ if ( $( this ).text().match( matcher ) ) {
+ this.selected = valid = true;
+ return false;
+ }
+ });
+ if ( !valid ) {
+ // remove invalid value, as it didn't match anything
+ $( element )
+ .val( "" )
+ .attr( "title", value + " didn't match any item" )
+ .tooltip( "open" );
+ select.val( "" );
+ setTimeout(function() {
+ input.tooltip( "close" ).attr( "title", "" );
+ }, 2500 );
+ input.data( "autocomplete" ).term = "";
+ return false;
+ }
+ }
+
+ var input = this.input = $( "<input>" )
+ .insertAfter( select )
+ .val( value )
+ .attr( "title", "" )
+ .autocomplete({
+ delay: 0,
+ minLength: 0,
+ source: function( request, response ) {
+ var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
+ response( select.children( "option" ).map(function() {
+ var text = $( this ).text();
+ if ( this.value && ( !request.term || matcher.test(text) ) )
+ return {
+ label: text.replace(
+ new RegExp(
+ "(?![^&;]+;)(?!<[^<>]*)(" +
+ $.ui.autocomplete.escapeRegex(request.term) +
+ ")(?![^<>]*>)(?![^&;]+;)", "gi"
+ ), "<strong>$1</strong>" ),
+ value: text,
+ option: this
+ };
+ }) );
+ },
+ select: function( event, ui ) {
+ ui.item.option.selected = true;
+ self._trigger( "selected", event, {
+ item: ui.item.option
+ });
+ },
+ change: function( event, ui ) {
+ if ( !ui.item )
+ return removeIfInvalid( this );
+ }
+ })
+ .addClass( "ui-widget ui-widget-content ui-corner-left" );
+
+ input.data( "autocomplete" )._renderItem = function( ul, item ) {
+ return $( "<li>" )
+ .data( "item.autocomplete", item )
+ .append( "<a>" + item.label + "</a>" )
+ .appendTo( ul );
+ };
+
+ this.button = $( "<button type='button'>&nbsp;</button>" )
+ .attr( "tabIndex", -1 )
+ .attr( "title", "Show All Items" )
+ .tooltip()
+ .insertAfter( input )
+ .button({
+ icons: {
+ primary: "ui-icon-triangle-1-s"
+ },
+ text: false
+ })
+ .removeClass( "ui-corner-all" )
+ .addClass( "ui-corner-right ui-button-icon" )
+ .click(function() {
+ // close if already visible
+ if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
+ input.autocomplete( "close" );
+ removeIfInvalid( input );
+ return;
+ }
+
+ // work around a bug (likely same cause as #5265)
+ $( this ).blur();
+
+ // pass empty string as value to search for, displaying all results
+ input.autocomplete( "search", "" );
+ input.focus();
+ });
+
+ input
+ .tooltip({
+ position: {
+ of: this.button
+ },
+ tooltipClass: "ui-state-highlight"
+ });
+ },
+
+ destroy: function() {
+ this.input.remove();
+ this.button.remove();
+ this.element.show();
+ $.Widget.prototype.destroy.call( this );
+ }
+ });
+ })( jQuery );
+
+ $(function() {
+ $( "#combobox" ).combobox();
+ $( "#toggle" ).click(function() {
+ $( "#combobox" ).toggle();
+ });
+ });
+ </script>
+</head>
+<body>
+
+<div class="demo">
+
+<div class="ui-widget">
+ <label>Your preferred programming language: </label>
+ <select id="combobox">
+ <option value="">Select one...</option>
+ <option value="ActionScript">ActionScript</option>
+ <option value="AppleScript">AppleScript</option>
+ <option value="Asp">Asp</option>
+ <option value="BASIC">BASIC</option>
+ <option value="C">C</option>
+ <option value="C++">C++</option>
+ <option value="Clojure">Clojure</option>
+ <option value="COBOL">COBOL</option>
+ <option value="ColdFusion">ColdFusion</option>
+ <option value="Erlang">Erlang</option>
+ <option value="Fortran">Fortran</option>
+ <option value="Groovy">Groovy</option>
+ <option value="Haskell">Haskell</option>
+ <option value="Java">Java</option>
+ <option value="JavaScript">JavaScript</option>
+ <option value="Lisp">Lisp</option>
+ <option value="Perl">Perl</option>
+ <option value="PHP">PHP</option>
+ <option value="Python">Python</option>
+ <option value="Ruby">Ruby</option>
+ <option value="Scala">Scala</option>
+ <option value="Scheme">Scheme</option>
+ </select>
+</div>
+<button id="toggle">Show underlying select</button>
+
+</div><!-- End demo -->
+
+
+
+<div class="demo-description">
+<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>
+<p>The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.</p>
+<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>
+</div><!-- End demo-description -->
+
+</body>
+</html>