承接 drakon5999/jquery-autocomplete 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

drakon5999/jquery-autocomplete

Composer 安装命令:

composer require drakon5999/jquery-autocomplete

包简介

Catalog Cart

README 文档

README

Devbridge Group accelerates software to market for enterprise clients through dedicated product teams, user experience and software engineering expertise.

www.devbridge.com

Ajax Autocomplete for jQuery

Ajax Autocomplete for jQuery allows you to easily create autocomplete/autosuggest boxes for text input fields.

Has no dependencies other than jQuery.

The standard jquery.autocomplete.js file is around 13KB when minified.

API

  • $(selector).autocomplete(options);
    • Sets up autocomplete for input field(s).
    • options: An object literal which defines the settings to use for the autocomplete plugin. Available option settings listed below.

Ajax Settings

  • serviceUrl: Server side URL or callback function that returns serviceUrl string. Optional if local lookup data is provided.
  • type: Ajax request type to get suggestions. Default: GET.
  • dataType: type of data returned from server. Either text (default), json or jsonp, which will cause the autocomplete to use jsonp. You may return a json object in your callback when using jsonp.
  • paramName: Default query. The name of the request parameter that contains the query.
  • params: Additional parameters to pass with the request, optional.
  • deferRequestBy: Number of miliseconds to defer Ajax request. Default: 0.
  • ajaxSettings: Any additional Ajax Settings that configure the jQuery Ajax request.

Configuration Settings

  • noCache: Boolean value indicating whether to cache suggestion results. Default false.
  • delimiter: String or RegExp, that splits input value and takes last part to as query for suggestions. Useful when for example you need to fill list of comma separated values.
  • onSearchStart: function (params) {} called before Ajax request. this is bound to input element.
  • onSearchComplete: function (query, suggestions) {} called after Ajax response is processed. this is bound to input element. suggestions is an array containing the results.
  • onSearchError: function (query, jqXHR, textStatus, errorThrown) {} called if Ajax request fails. this is bound to input element.
  • transformResult: function(response, originalQuery) {} called after the result of the query is ready. Converts the result into response.suggestions format.
  • onSelect: function (suggestion) {} Callback function invoked when user selects suggestion from the list. this inside callback refers to input HtmlElement.
  • minChars: Minimum number of characters required to trigger autosuggest. Default: 1.
  • lookupLimit: Number of maximum results to display for local lookup. Default: no limit.
  • lookup: Callback function or lookup array for the suggestions. It may be array of strings or suggestion object literals.
    • suggestion: An object literal with the following format: { value: 'string', data: any }.
  • lookupFilter: function (suggestion, query, queryLowerCase) {} filter function for local lookups. By default it does partial string match (case insensitive).
  • triggerSelectOnValidInput: Boolean value indicating if select should be triggered if it matches suggestion. Default true.
  • preventBadQueries: Boolean value indicating if it should prevent future Ajax requests for queries with the same root if no results were returned. E.g. if Jam returns no suggestions, it will not fire for any future query that starts with Jam. Default true.
  • autoSelectFirst: if set to true, first item will be selected when showing suggestions. Default value false.
  • onHide: function (container) {} called before container will be hidden

Presentation Settings

  • beforeRender: function (container, suggestions) {} called before displaying the suggestions. You may manipulate suggestions DOM before it is displayed.
  • formatResult: function (suggestion, currentValue) {} custom function to format suggestion entry inside suggestions container, optional.
  • formatGroup: function (suggestion, category) {} custom function to format group header, optional.
  • groupBy: property name of the suggestion data object, by which results should be grouped.
  • maxHeight: Maximum height of the suggestions container in pixels. Default: 300.
  • width: Suggestions container width in pixels, e.g.: 300, flex for max suggestion size and auto takes input field width. Default: auto
  • zIndex: 'z-index' for suggestions container. Default: 9999.
  • appendTo: container where suggestions will be appended. Default value document.body. Can be jQuery object, selector or HTML element. Make sure to set position: absolute or position: relative for that element.
  • forceFixPosition: Default: false. Suggestions are automatically positioned when their container is appended to body (look at appendTo option), in other cases suggestions are rendered but no positioning is applied. Set this option to force auto positioning in other cases.
  • orientation: Default bottom. Vertical orientation of the displayed suggestions, available values are auto, top, bottom. If set to auto, the suggestions will be orientated it the way that place them closer to middle of the view port.
  • preserveInput: if true, input value stays the same when navigating over suggestions. Default: false.
  • showNoSuggestionNotice: Default false. When no matching results, display a notification label.
  • noSuggestionNotice: Default No results. Text or htmlString or Element or jQuery object for no matching results label.
  • onInvalidateSelection: function () {} called when input is altered after selection has been made. this is bound to input element.
  • tabDisabled: Default false. Set to true to leave the cursor in the input field after the user tabs to select a suggestion.

Default Options

Default options for all instances can be accessed via $.Autocomplete.defaults.

Instance Methods

Autocomplete instance has following methods:

  • setOptions(options): you may update any option at any time. Options are listed above.
  • clear: clears suggestion cache and current suggestions.
  • clearCache: clears suggestion cache.
  • disable: deactivate autocomplete.
  • enable: activates autocomplete if it was deactivated before.
  • hide: hides suggestions.
  • dispose: destroys autocomplete instance. All events are detached and suggestion containers removed.

There are two ways that you can invoke Autocomplete method. One is calling autocomplete on jQuery object and passing method name as string literal. If method has arguments, arguments are passed as consecutive parameters:

$('#autocomplete').autocomplete('disable');
$('#autocomplete').autocomplete('setOptions', options);

Or you can get Autocomplete instance by calling autcomplete on jQuery object without any parameters and then invoke desired method.

$('#autocomplete').autocomplete().disable();
$('#autocomplete').autocomplete().setOptions(options);

Usage

Html:

<input type="text" name="country" id="autocomplete"/>

Ajax lookup:

$('#autocomplete').autocomplete({
    serviceUrl: '/autocomplete/countries',
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

Local lookup (no Ajax):

var countries = [
    { value: 'Andorra', data: 'AD' },
    // ...
    { value: 'Zimbabwe', data: 'ZZ' }
];

$('#autocomplete').autocomplete({
    lookup: countries,
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

Custom lookup function:

$('#autocomplete').autocomplete({
    lookup: function (query, done) {
        // Do Ajax call or lookup locally, when done,
        // call the callback and pass your results:
        var result = {
            suggestions: [
                { "value": "United Arab Emirates", "data": "AE" },
                { "value": "United Kingdom",       "data": "UK" },
                { "value": "United States",        "data": "US" }
            ]
        };

        done(result);
    },
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

Styling

Generated HTML markup for suggestions is displayed below. You may style it any way you'd like.

<div class="autocomplete-suggestions">
    <div class="autocomplete-group"><strong>NHL</strong></div>
    <div class="autocomplete-suggestion autocomplete-selected">...</div>
    <div class="autocomplete-suggestion">...</div>
    <div class="autocomplete-suggestion">...</div>
</div>

Style sample:

.autocomplete-suggestions { border: 1px solid #999; background: #FFF; overflow: auto; }
.autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; }
.autocomplete-selected { background: #F0F0F0; }
.autocomplete-suggestions strong { font-weight: normal; color: #3399FF; }
.autocomplete-group { padding: 2px 5px; }
.autocomplete-group strong { display: block; border-bottom: 1px solid #000; }

Response Format

Response from the server must be JSON formatted following JavaScript object:

{
    // Query is not required as of version 1.2.5
    "query": "Unit",
    "suggestions": [
        { "value": "United Arab Emirates", "data": "AE" },
        { "value": "United Kingdom",       "data": "UK" },
        { "value": "United States",        "data": "US" }
    ]
}

Data can be any value or object. Data object is passed to formatResults function and onSelect callback. Alternatively, if there is no data you can supply just a string array for suggestions:

{
    "query": "Unit",
    "suggestions": ["United Arab Emirates", "United Kingdom", "United States"]
}

Non standard query/results

If your Ajax service expects the query in a different format, and returns data in a different format than the standard response, you can supply the "paramName" and "transformResult" options:

$('#autocomplete').autocomplete({
    paramName: 'searchString',
    transformResult: function(response) {
        return {
            suggestions: $.map(response.myData, function(dataItem) {
                return { value: dataItem.valueField, data: dataItem.dataField };
            })
        };
    }
})

Grouping Results

Specify groupBy option of you data property if you wish results to be displayed in groups. For example, set groupBy: 'category' if your suggestion data format is:

[
    { value: 'Chicago Blackhawks', data: { category: 'NHL' } },
    { value: 'Chicago Bulls', data: { category: 'NBA' } }
]

Results will be formatted into two groups NHL and NBA.

Known Issues

If you use it with jQuery UI library it also has plugin named autocomplete. In this case you can use plugin alias devbridgeAutocomplete:

$('.autocomplete').devbridgeAutocomplete({ ... });

It seems that for mobile Safari click events are only triggered if the CSS of the object being tapped has the cursor set to pointer:

.autocomplete-suggestion { 
    cursor: pointer;
}

See issue #542

License

Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.

Copyright notice and permission notice shall be included in all copies or substantial portions of the Software.

Authors

Tomas Kirda / @tkirda

jquery-autocomplete

drakon5999/jquery-autocomplete 适用场景与选型建议

drakon5999/jquery-autocomplete 是一款 基于 JavaScript 开发的 Composer 扩展包,目前已累计 3.28k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2017 年 08 月 23 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 drakon5999/jquery-autocomplete 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 drakon5999/jquery-autocomplete 我们能提供哪些服务?
定制开发 / 二次开发

基于 drakon5999/jquery-autocomplete 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.28k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 23
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 2
  • Forks: 0
  • 开发语言: JavaScript

其他信息

  • 授权协议: GPL3
  • 更新时间: 2017-08-23