web/static/css/jq-css/demos/autocomplete/remote-with-cache.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 Remote with caching 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.position.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
	<script type="text/javascript" src="../../ui/jquery.ui.autocomplete.js"></script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
	<link type="text/css" href="../demos.css" rel="stylesheet" />
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
	<script type="text/javascript">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
	$(function() {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
		function log(message) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
			$("<div/>").text(message).prependTo("#log");
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
			$("#log").attr("scrollTop", 0);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
		}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
		
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
		var cache = {};
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
		$("#birds").autocomplete({
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
			source: function(request, response) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
				if (cache.term == request.term && cache.content) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
					response(cache.content);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
					return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
				if (new RegExp(cache.term).test(request.term) && cache.content && cache.content.length < 13) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
					response($.ui.autocomplete.filter(cache.content, request.term));
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
					return;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
				}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
				$.ajax({
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
					url: "search.php",
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
					dataType: "json",
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
					data: request,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
					success: function(data) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
						cache.term = request.term;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
						cache.content = data;
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
						response(data);
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
			},
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
			minLength: 2,
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
			select: function(event, ui) {
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
				log(ui.item ? ("Selected: " + ui.item.value + " aka " + ui.item.id) : "Nothing selected, input was " + this.value);
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			}
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
	});
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
	</script>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
</head>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
<body>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
<div class="demo">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
<div class="ui-widget">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
	<label for="birds">Birds: </label>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	<input id="birds" />
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
</div>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
<div class="ui-widget" style="margin-top:2em; font-family:Arial">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
	Result:
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
	<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
</div>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
</div><!-- End demo -->
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
<div class="demo-description">
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
<p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
The Autocomplete widgets provides suggestions while you type into the field. Here the suggestions are bird names, displayed when at least two characters are entered into the field.
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
</p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
<p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
Similar to the remote datasource demo, though this adds some local caching to improve performance. The cache here saves just one query, and could be extended to cache multiple values, one for each term.
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
</p>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
</div><!-- End demo-description -->
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
</body>
cc4a51750724 first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
</html>