aboutsummaryrefslogtreecommitdiffstats
path: root/demos/autocomplete/remote-with-cache.html
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2010-01-14 17:23:11 +0000
committerScott González <scott.gonzalez@gmail.com>2010-01-14 17:23:11 +0000
commit6024fdf2564b274af2f2d306f420e44a2c88d7b1 (patch)
treee2bace3eacb81bd9732226fc19dfd5089d19fe3f /demos/autocomplete/remote-with-cache.html
parent7f5fe2f2f14406a0c028e92ab6203ae0b72a1e96 (diff)
downloadjquery-ui-6024fdf2564b274af2f2d306f420e44a2c88d7b1.tar.gz
jquery-ui-6024fdf2564b274af2f2d306f420e44a2c88d7b1.zip
Copied autocomplete from dev branch.
Diffstat (limited to 'demos/autocomplete/remote-with-cache.html')
-rw-r--r--demos/autocomplete/remote-with-cache.html76
1 files changed, 76 insertions, 0 deletions
diff --git a/demos/autocomplete/remote-with-cache.html b/demos/autocomplete/remote-with-cache.html
new file mode 100644
index 000000000..8f1a5786a
--- /dev/null
+++ b/demos/autocomplete/remote-with-cache.html
@@ -0,0 +1,76 @@
+<!doctype html>
+<html>
+<head>
+ <title>jQuery UI Autocomplete Remote with caching demo</title>
+ <link type="text/css" href="../../themes/base/ui.all.css" rel="stylesheet" />
+ <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
+ <script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
+ <script type="text/javascript" src="../../ui/jquery.ui.widget.js"></script>
+ <script type="text/javascript" src="../../ui/jquery.ui.position.js"></script>
+ <script type="text/javascript" src="../../ui/jquery.ui.autocomplete.js"></script>
+ <link type="text/css" href="../demos.css" rel="stylesheet" />
+ <script type="text/javascript">
+ $(function() {
+ function log(message) {
+ $("<div/>").text(message).prependTo("#log");
+ $("#log").attr("scrollTop", 0);
+ }
+
+ var cache = {};
+ $("#birds").autocomplete({
+ source: function(request, response) {
+ if (cache.term == request.term && cache.content) {
+ response(cache.content);
+ }
+ if (new RegExp(cache.term).test(request.term) && cache.content && cache.content.length < 13) {
+ var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
+ response($.grep(cache.content, function(value) {
+ return matcher.test(value.value)
+ }));
+ }
+ $.ajax({
+ url: "search.php",
+ dataType: "json",
+ data: request,
+ success: function(data) {
+ cache.term = request.term;
+ cache.content = data;
+ response(data);
+ }
+ });
+ },
+ minLength: 2,
+ select: function(event, ui) {
+ log(ui.item ? ("Selected: " + ui.item.value + " aka " + ui.item.id) : "Nothing selected, input was " + this.value);
+ }
+ });
+ });
+ </script>
+</head>
+<body>
+
+<div class="demo">
+
+<div class="ui-widget">
+ <label for="birds">Birds: </label>
+ <input id="birds" />
+</div>
+
+<div class="ui-widget" style="margin-top:2em; font-family:Arial">
+ Result:
+ <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
+</div>
+
+</div><!-- End demo -->
+
+<div class="demo-description">
+<p>
+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.
+</p>
+<p>
+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.
+</p>
+</div><!-- End demo-description -->
+
+</body>
+</html>