web/static/css/jq-css/demos/autocomplete/combobox.html
author ymh <ymh.work@gmail.com>
Sat, 12 Jun 2010 04:25:05 +0200
changeset 0 cc4a51750724
permissions -rw-r--r--
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<!DOCTYPE html>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
<html lang="en">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
<head>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
	<meta charset="UTF-8" />
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
	<title>jQuery UI Autocomplete Combobox Demo</title>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
	<link type="text/css" href="../../themes/base/jquery.ui.all.css" rel="stylesheet" />
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
	<script type="text/javascript" src="../../jquery-1.4.2.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
	<script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
	<script type="text/javascript" src="../../ui/jquery.ui.widget.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
	<script type="text/javascript" src="../../ui/jquery.ui.button.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
	<script type="text/javascript" src="../../ui/jquery.ui.position.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
	<script type="text/javascript" src="../../ui/jquery.ui.autocomplete.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
	<link type="text/css" href="../demos.css" rel="stylesheet" />
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
	<style type="text/css">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
		/* TODO shouldn't be necessary */
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
		.ui-button { margin-left: -1px; }
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
		.ui-button-icon-only .ui-button-text { padding: 0.35em; } 
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
		.ui-autocomplete-input { margin: 0; padding: 0.48em 0 0.47em 0.45em; }
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	</style>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
	<script type="text/javascript">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
	(function($) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
		$.widget("ui.combobox", {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
			_create: function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
				var self = this;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
				var select = this.element.hide();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
				var input = $("<input>")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
					.insertAfter(select)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
					.autocomplete({
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
						source: function(request, response) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
							var matcher = new RegExp(request.term, "i");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
							response(select.children("option").map(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
								var text = $(this).text();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
								if (this.value && (!request.term || matcher.test(text)))
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
									return {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
										id: this.value,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
										label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
										value: text
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
									};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
							}));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
						},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
						delay: 0,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
						change: function(event, ui) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
							if (!ui.item) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
								// remove invalid value, as it didn't match anything
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
								$(this).val("");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
								return false;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
							}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
							select.val(ui.item.id);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
							self._trigger("selected", event, {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
								item: select.find("[value='" + ui.item.id + "']")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
							});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
							
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
						},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
						minLength: 0
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
					})
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
					.addClass("ui-widget ui-widget-content ui-corner-left");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				$("<button>&nbsp;</button>")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
				.attr("tabIndex", -1)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
				.attr("title", "Show All Items")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
				.insertAfter(input)
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
				.button({
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
					icons: {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
						primary: "ui-icon-triangle-1-s"
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
					},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
					text: false
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
				}).removeClass("ui-corner-all")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
				.addClass("ui-corner-right ui-button-icon")
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
				.click(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
					// close if already visible
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
					if (input.autocomplete("widget").is(":visible")) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
						input.autocomplete("close");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
						return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
					}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
					// pass empty string as value to search for, displaying all results
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
					input.autocomplete("search", "");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
					input.focus();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
				});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
	})(jQuery);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
		
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
	$(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
		$("#combobox").combobox();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
		$("#toggle").click(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
			$("#combobox").toggle();
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
	});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
	</script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
</head>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
<body>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
	
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
<div class="demo">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
<div class="ui-widget">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
	<label>Your preferred programming language: </label>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
	<select id="combobox">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
		<option value="">Select one...</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
		<option value="a">asp</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        <option value="c">c</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
        <option value="cpp">c++</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
        <option value="cf">coldfusion</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
        <option value="g">groovy</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
        <option value="h">haskell</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
        <option value="j">java</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
        <option value="js">javascript</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
        <option value="p1">perl</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
        <option value="p2">php</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
        <option value="p3">python</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
        <option value="r">ruby</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
        <option value="s">scala</option>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
	</select>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
</div>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
<button id="toggle">Show underlying select</button>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
</div><!-- End demo -->
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
<div class="demo-description">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
<p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
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.
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
</p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
<p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
The input is read from an existing select-element for progressive enhancement, passed to Autocomplete with a customized source-option.
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
</p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
</div><!-- End demo-description -->
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
</body>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
</html>