0.7.0 • Published 2 years ago

jquery-autocompleter v0.7.0

Weekly downloads
140
License
MIT
Repository
github
Last release
2 years ago

jQuery Autocompleter Plugin

Demo

Here: Example with Crayola colors.

Usage

Installation

npm:

npm install --save jquery-autocompleter

Yarn:

yarn add jquery-autocompleter

Add plugin to your project

  • include jQuery:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  • include plugin's code:

    <!-- Styles -->
    <link rel="stylesheet" href="css/jquery.autocompleter.css" />
    
    <!-- Scripts -->
    <script src="js/jquery.autocompleter.min.js"></script>
  • call the plugin:

    $("input").autocompleter({
      /* options */
    });

Examples

  • remote url

    $(function () {
      $("input").autocompleter({ source: "path/to/get_data_request" });
    });
  • plain

    var data = [
      { value: 1, label: "one" },
      { value: 2, label: "two" },
      { value: 3, label: "three" },
    ];
    
    $(function () {
      $("input").autocompleter({ source: data });
    });

Options

Autocompleter has the following options:

NameTypeDescriptionDeafult
sourcestr, objURL to the server or a local objectnull
asLocalboolParse remote response as local sourcefalse
emptyboolLaunch if value is emptytrue
limitintNumber of results to be displayed10
minLengthintMinimum length for autocompleter0
delayintFew milliseconds to defer the request0
customClassarrayArray with custom classes for autocompleter element[]
cacheboolSave xhr data to localStorage to avoid the repetition of requeststrue
cacheExpiresintlocalStorage data lifetime in sec (0 to disable cache expire)86400
focusOpenboolLaunch autocompleter when input gets focustrue
enterSelectboolAllows to select using enter keytrue
hintboolAdd hint to input with first matched label, correct styles should be installedfalse
selectFirstboolIf set to true, first element in autocomplete list will be selected automatically, ignore if changeWhenSelect is onfalse
changeWhenSelectboolAllows to change input value using arrow keys navigation in autocomplete listtrue
highlightMatchesboolThis option defines <strong> tag wrap for matches in autocomplete resultsfalse
ignoredKeyCodearrayArray with ignorable keycodes, by default: 9, 13, 17, 19, 20, 27, 33, 34, 35, 36, 37, 39, 44, 92, 113, 114, 115, 118, 119, 120, 122, 123, 144, 145[]
customLabelstrThe name of object's property which will be used as a labelfalse
customValuestrThe name of object's property which will be used as a valuefalse
onBeforeSendfunctionThis function is triggered before an ajax request\$.noop
onBeforeShowfunctionThis function is triggered when the list is ready to be shown\$.noop
onEmptyfunctionIf data list if empty, trigger this function\$.noop
onItemfunctionThis function is triggered when each item is being prepared to be shown\$.noop
onListOpenfunctionThis function is triggered when the list is shown\$.noop
onListClosefunctionThis function is triggered when the list is hidden\$.noop
onBeforeLaunchfunctionThe event was triggered before the new request (including local cache)\$.noop
templatestrCustom template for list items. For example: <span>{{ label }} is {{ customPropertyFromSource }}</span>. Template appends to .autocompleter-item.false
offsetstrSource response offset, for example: "response.items.posts". @deprecated use format insteadfalse
formatfunctionFormat response payload to return source datanull
combinefunctionReturns an object which extends ajax data. Useful if you want to pass some additional server options\$.noop
callbackfunctionSelect value callback function. Arguments: value, index, object\$.noop

Methods

Change option after plugin is defined

$("#input").autocompleter("option", data);

For example:

$("#input").autocompleter("option", {
  limit: 5,
  template:
    '<img src="{{ image }}" alt="Image for autocompleter list item" /> {{ label }}',
});

Open list

$("#input").autocompleter("open");

Close list

$("#input").autocompleter("close");

Destroy plugin

$("#input").autocompleter("destroy");

Clear all cache

$.autocompleter("clearCache");

Set defaults

$.autocompleter("defaults", {
  customClass: "myClassForAutocompleter",
});

One more example

Autocompleter for the first name input with caching, match highlighting and 5 results limit. Remote response depends on a gender:

Form markup

<fieldset>
  <label>Male</label>
  <input type="radio" name="gender" value="male" checked="checked" />

  <label>Female</label>
  <input type="radio" name="gender" value="female" />

  <label>Other</label>
  <input type="radio" name="gender" value="other" />

  <label>First Name</label>
  <input type="text" name="firstname" id="firstname" />
</fieldset>

Code

$(function () {
  $("#firstname").autocompleter({
    source: "https://EXAMPLE_API_ENDPOINT.com/api/search/name",
    limit: 5,
    cache: true,
    combine: function (params) {
      var gender = $("input:radio[name=gender]:checked").val();

      // passing params to match endpoint
      return {
        q: params.query,
        count: params.limit,
        gender: gender,
      };
    },
    format: function (data) {
      // map response data to match autocompleter
      return data.entries.map(function (item) {
        return {
          label: item.name,
          value: item.slug,
        };
      });
    },
    callback: function (value, index, object) {
      console.log(
        "Value " + value + " are selected (with index " + index + ")."
      );
      console.log(object);
    },
  });
});

Markup

div (node) -> ul (list) -> li (item).

<div class="autocompleter" id="autocompleter-1">
  <ul class="autocompleter-list">
    <li class="autocompleter-item">First</li>
    <!-- ... -->
    <li class="autocompleter-item">Last</li>
  </ul>
</div>
0.7.0

2 years ago

0.5.0

2 years ago

0.4.0

2 years ago

0.6.0

2 years ago

0.4.0-0

4 years ago

0.3.0

6 years ago

0.2.1

6 years ago

0.2.0

6 years ago

0.1.10

6 years ago

0.1.9

9 years ago

0.1.7

9 years ago