Pages

Thursday, 1 August 2013

Custom Auto Suggest and filter dropdownlist.

hello friends,



https://www.youtube.com/watch?v=C8oykuBC0HA&t=2s

Today i gonna show you some great utility controls and API which make your web site a delight experience for visitors n users.

(1)When you a have very long list of items to display in a dropdown list in that case these below great control serves awesome utility of auto-suggestion and filtering of item on the basis of text or alphabet typed by user.
Below I gave a complete working code sample for it copy and enjoy:



<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>
 <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
 <link rel="stylesheet" href="/resources/demos/style.css" />
<style type="text/css">
  .custom-combobox {
    position: relative;
    display: inline-block;
   
  }
  .custom-combobox-toggle {
    position: absolute;
    top: 0;
    bottom: 0;
    margin-left: -1px;
    padding: 0;
    /* support: IE7 */
    *height: 1.2em;
    *top: 0.1em;
  }
  .custom-combobox-input {
    margin: 0;
    padding: 0.1em;
    width: auto;
    overflow:scroll;
    font-family:Arial;
   
    font-size:14;
   
}
  </style>
  <script type="text/javascript">
      (function ($) {
          $.widget("custom.combobox", {
              _create: function () {
                  this.wrapper = $("<span>")
          .addClass("custom-combobox")
          .insertAfter(this.element);
                  this.element.hide();
                  this._createAutocomplete();
                  this._createShowAllButton();
              },
              _createAutocomplete: function () {
                  var selected = this.element.children(":selected"),
          value = selected.val() ? selected.text() : "";
                  this.input = $("<input>")
          .appendTo(this.wrapper)
          .val(value)
          .attr("title", "")
          .addClass("custom-combobox-input ui-widget ui-widget-content ui-state-default ui-corner-left")
          .autocomplete({
              delay: 0,
              minLength: 0,
              source: $.proxy(this, "_source")
          })
          .tooltip({
              tooltipClass: "ui-state-highlight"
          });
                  this._on(this.input, {
                      autocompleteselect: function (event, ui) {
                          ui.item.option.selected = true;
                          this._trigger("select", event, {
                              item: ui.item.option
                          });
                      },
                      autocompletechange: "_removeIfInvalid"
                  });
              },
              _createShowAllButton: function () {
                  var input = this.input,
          wasOpen = false;
                  $("<a>")
          .attr("tabIndex", -1)
          .attr("title", "Show All Items")
          .tooltip()
          .appendTo(this.wrapper)
          .button({
              icons: {
                  primary: "ui-icon-triangle-1-s"
              },
              text: false
          })
          .removeClass("ui-corner-all")
          .addClass("custom-combobox-toggle ui-corner-right")
          .mousedown(function () {
              wasOpen = input.autocomplete("widget").is(":visible");
          })
          .click(function () {
              input.focus();
              // Close if already visible
              if (wasOpen) {
                  return;
              }
              // Pass empty string as value to search for, displaying all results
              input.autocomplete("search", "");
          });
              },
              _source: function (request, response) {
                  var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
                  response(this.element.children("option").map(function () {
                      var text = $(this).text();
                      if (this.value && (!request.term || matcher.test(text)))
                          return {
                              label: text,
                              value: text,
                              option: this
                          };
                  }));
              },
              _removeIfInvalid: function (event, ui) {
                  // Selected an item, nothing to do
                  if (ui.item) {
                      return;
                  }
                  // Search for a match (case-insensitive)
                  var value = this.input.val(),
          valueLowerCase = value.toLowerCase(),
          valid = false;
                  this.element.children("option").each(function () {
                      if ($(this).text().toLowerCase() === valueLowerCase) {
                          this.selected = valid = true;
                          return false;
                      }
                  });
                  // Found a match, nothing to do
                  if (valid) {
                      return;
                  }
                  // Remove invalid value
                  this.input
          .val("")
          .attr("title", value + " didn't match any item")
          .tooltip("open");
                  this.element.val("");
                  this._delay(function () {
                      this.input.tooltip("close").attr("title", "");
                  }, 2500);
                  this.input.data("ui-autocomplete").term = "";
              },
              _destroy: function () {
                  this.wrapper.remove();
                  this.element.show();
              }
          });
      })(jQuery);
      $(function () {
          $("#ddlanguages").combobox();
        });
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:DropDownList ID="ddlanguages" ClientIDMode="Static" runat="server">
        <asp:ListItem Text=""></asp:ListItem>
        <asp:ListItem Text="ActionScript"></asp:ListItem>
        <asp:ListItem Text="AppleScript"></asp:ListItem>
        <asp:ListItem Text="Asp"></asp:ListItem>
        <asp:ListItem Text="BASIC"></asp:ListItem>
        <asp:ListItem Text="C"></asp:ListItem>
        <asp:ListItem Text="C++"></asp:ListItem>
        <asp:ListItem Text="Clojure"></asp:ListItem>
        <asp:ListItem Text="COBOL"></asp:ListItem>
        <asp:ListItem Text="ColdFusion"></asp:ListItem>
        <asp:ListItem Text="Erlang"></asp:ListItem>
        <asp:ListItem Text="Fortran"></asp:ListItem>
        <asp:ListItem Text="Groovy"></asp:ListItem>
        <asp:ListItem Text="Haskell"></asp:ListItem>
        <asp:ListItem Text="Java"></asp:ListItem>
        <asp:ListItem Text="JavaScript"></asp:ListItem>
        <asp:ListItem Text="Lisp"></asp:ListItem>
        <asp:ListItem Text="Perl"></asp:ListItem>
        <asp:ListItem Text="PHP"></asp:ListItem>
        <asp:ListItem Text="Python"></asp:ListItem>
        <asp:ListItem Text="Ruby"></asp:ListItem>
        <asp:ListItem Text="Scala"></asp:ListItem>
        <asp:ListItem Text="Scheme"></asp:ListItem>
              
    </asp:DropDownList>
    </div>
    </form>
</body>
</html>
here i just disscussed one of them for today but, i will definately share some more exciting utilities in my coming posts.....