【问题标题】:jquery multi autocomplete with remote source, showing the results on focus带有远程源的jquery multi autocomplete,显示焦点结果
【发布时间】:2013-07-15 11:47:53
【问题描述】:

我想用 jQuery 插件包装标准 jQuery UI 自动完成功能,以实现多值自动完成功能。一切都很好,除了一件小事。我想提出关于重点的建议。我应该如何修改我的代码?

(function ($) {
    $.fn.myautocomplete = function (options) {
        var defaults = {
            source: null,
            minLength: 0,
            separator: ", "
        };

        var o = {};
        $.extend(o, defaults, options);

        var split = function(val) { return val.split(/,\s*/); };
        var extractLast = function(term) { return split(term).pop(); };

        if (o.source == null) return this;

        return this.each(function () {
            $(this).autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: o.source,
                        data: { term: extractLast(request.term) },
                        success: function(data) {
                            response($.map(data, function(item) {
                                return { label: item.Name };
                            }));
                        }
                    });
                },
                search: function() {
                    return extractLast(this.value).length > o.minLength;
                },
                focus: function() {

                        //$(this).trigger('keydown.autocomplete');
                        $(this).data("autocomplete").search($(this).val());
                    //return false;
                },
                select: function(event, ui) {
                    var terms = split(this.value);
                    terms.pop();
                    terms.push(ui.item.label);
                    terms.push("");
                    this.value = terms.join(o.separator);
                    return false;
                }
            });
        });
    };
})(jQuery);

我已经尝试了您在焦点处理程序中看到的所有内容。

【问题讨论】:

  • 我认为 jQuery 自动完成在提出任何建议之前都有一个最小字符长度。您可以将最小字符长度设置为 0。希望这会有所帮助。
  • 正如您在列表中看到的,我已经尝试过了。没有影响

标签: jquery jquery-ui jquery-plugins jquery-autocomplete


【解决方案1】:

这对我有帮助:

    var showSuggestions = function() {
        var searchString = extractLast(this.value);
        if (searchString.trim().length == 0) {
            searchString = "[GetAll]";
        }

        $(this).autocomplete("search", searchString);
    };

    $(this).focus(showSuggestions).click(showSuggestions);

在服务器上我正在检查它是否是 [GetAll] 我认为这是空字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-18
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    相关资源
    最近更新 更多