client/player/development-bundle/demos/autocomplete/remote-with-cache.html
changeset 57 3a3c15c462f8
parent 48 44d58d2e90b5
parent 56 da0957782d03
child 58 ec1d0e7dcb53
equal deleted inserted replaced
48:44d58d2e90b5 57:3a3c15c462f8
     1 <!DOCTYPE html>
       
     2 <html lang="en">
       
     3 <head>
       
     4 	<meta charset="UTF-8" />
       
     5 	<title>jQuery UI Autocomplete Remote with caching demo</title>
       
     6 	<link type="text/css" href="../../themes/base/jquery.ui.all.css" rel="stylesheet" />
       
     7 	<script type="text/javascript" src="../../jquery-1.4.2.js"></script>
       
     8 	<script type="text/javascript" src="../../ui/jquery.ui.core.js"></script>
       
     9 	<script type="text/javascript" src="../../ui/jquery.ui.widget.js"></script>
       
    10 	<script type="text/javascript" src="../../ui/jquery.ui.position.js"></script>
       
    11 	<script type="text/javascript" src="../../ui/jquery.ui.autocomplete.js"></script>
       
    12 	<link type="text/css" href="../demos.css" rel="stylesheet" />
       
    13 	<script type="text/javascript">
       
    14 	$(function() {
       
    15 		function log(message) {
       
    16 			$("<div/>").text(message).prependTo("#log");
       
    17 			$("#log").attr("scrollTop", 0);
       
    18 		}
       
    19 		
       
    20 		var cache = {};
       
    21 		$("#birds").autocomplete({
       
    22 			source: function(request, response) {
       
    23 				if (cache.term == request.term && cache.content) {
       
    24 					response(cache.content);
       
    25 					return;
       
    26 				}
       
    27 				if (new RegExp(cache.term).test(request.term) && cache.content && cache.content.length < 13) {
       
    28 					response($.ui.autocomplete.filter(cache.content, request.term));
       
    29 					return;
       
    30 				}
       
    31 				$.ajax({
       
    32 					url: "search.php",
       
    33 					dataType: "json",
       
    34 					data: request,
       
    35 					success: function(data) {
       
    36 						cache.term = request.term;
       
    37 						cache.content = data;
       
    38 						response(data);
       
    39 					}
       
    40 				});
       
    41 			},
       
    42 			minLength: 2,
       
    43 			select: function(event, ui) {
       
    44 				log(ui.item ? ("Selected: " + ui.item.value + " aka " + ui.item.id) : "Nothing selected, input was " + this.value);
       
    45 			}
       
    46 		});
       
    47 	});
       
    48 	</script>
       
    49 </head>
       
    50 <body>
       
    51 
       
    52 <div class="demo">
       
    53 
       
    54 <div class="ui-widget">
       
    55 	<label for="birds">Birds: </label>
       
    56 	<input id="birds" />
       
    57 </div>
       
    58 
       
    59 <div class="ui-widget" style="margin-top:2em; font-family:Arial">
       
    60 	Result:
       
    61 	<div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
       
    62 </div>
       
    63 
       
    64 </div><!-- End demo -->
       
    65 
       
    66 <div class="demo-description">
       
    67 <p>
       
    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.
       
    69 </p>
       
    70 <p>
       
    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.
       
    72 </p>
       
    73 </div><!-- End demo-description -->
       
    74 
       
    75 </body>
       
    76 </html>