aboutsummaryrefslogtreecommitdiffstats
path: root/demos/autocomplete/combobox.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/combobox.html
parent7f5fe2f2f14406a0c028e92ab6203ae0b72a1e96 (diff)
downloadjquery-ui-6024fdf2564b274af2f2d306f420e44a2c88d7b1.tar.gz
jquery-ui-6024fdf2564b274af2f2d306f420e44a2c88d7b1.zip
Copied autocomplete from dev branch.
Diffstat (limited to 'demos/autocomplete/combobox.html')
-rw-r--r--demos/autocomplete/combobox.html126
1 files changed, 126 insertions, 0 deletions
diff --git a/demos/autocomplete/combobox.html b/demos/autocomplete/combobox.html
new file mode 100644
index 000000000..88e4105e7
--- /dev/null
+++ b/demos/autocomplete/combobox.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<html>
+<head>
+ <title>jQuery UI Autocomplete Combobox 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.button.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($) {
+ $.widget("ui.combobox", {
+ _init: function() {
+ var self = this;
+ var select = this.element.hide();
+ var input = $("<input>")
+ .insertAfter(select)
+ .autocomplete({
+ source: function(request, response) {
+ var matcher = new RegExp(request.term, "i");
+ response(select.children("option").map(function() {
+ var text = $(this).text();
+ if (!request.term || matcher.test(text))
+ return {
+ id: $(this).val(),
+ label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + request.term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
+ value: text
+ };
+ }));
+ },
+ delay: 0,
+ select: function(e, ui) {
+ if (!ui.item) {
+ // remove invalid value, as it didn't match anything
+ $(this).val("");
+ return false;
+ }
+ $(this).focus();
+ select.val(ui.item.id);
+ self._trigger("selected", null, {
+ item: select.find("[value='" + ui.item.id + "']")
+ });
+
+ },
+ minLength: 0
+ })
+ .removeClass("ui-corner-all")
+ .addClass("ui-corner-left");
+ $("<button>&nbsp;</button>")
+ .insertAfter(input)
+ .button({
+ icons: {
+ primary: "ui-icon-triangle-1-s"
+ },
+ text: false
+ }).removeClass("ui-corner-all")
+ .addClass("ui-corner-right ui-button-icon")
+ .position({
+ my: "left center",
+ at: "right center",
+ of: input,
+ offset: "-1 0"
+ }).css("top", "")
+ .click(function() {
+ // close if already visible
+ if (input.autocomplete("widget").is(":visible")) {
+ input.autocomplete("close");
+ return;
+ }
+ // pass empty string as value to search for, displaying all results
+ input.autocomplete("search", "");
+ input.focus();
+ });
+ }
+ });
+
+ })(jQuery);
+
+ $(function() {
+ $("select").combobox();
+ });
+ </script>
+ <style>
+ /* TODO shouldn't be necessary */
+ .ui-button-icon-only .ui-button-text { padding: 0; }
+ </style>
+</head>
+<body>
+
+<div class="demo">
+
+<div class="ui-widget">
+ <label>Your preferred programming language: </label>
+ <select>
+ <option value="a">asp</option>
+ <option value="c">c</option>
+ <option value="cpp">c++</option>
+ <option value="cf">coldfusion</option>
+ <option value="g">groovy</option>
+ <option value="h">haskell</option>
+ <option value="j">java</option>
+ <option value="js">javascript</option>
+ <option value="p1">pearl</option>
+ <option value="p2">php</option>
+ <option value="p3">python</option>
+ <option value="r">ruby</option>
+ <option value="s">scala</option>
+ </select>
+</div>
+
+</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>
+</div><!-- End demo-description -->
+
+</body>
+</html>