自动完成以返回单词组的主要单词

时间:2015-11-12 04:39:14

标签: jquery jquery-ui autocomplete

我正在使用jQuery自动填充功能 - https://jqueryui.com/autocomplete/并将其用于下拉列表:

$(function() {
    var availableTags = [
        "ActionScript",
        "Asp",
        "BASIC",
        "C",
        "ColdFusion",
        "Scheme"
    ];

    $( "#tags" ).autocomplete({
        source: availableTags
    });
});

现在我想有另一个场景,如果用户开始在"相关数组中输入单词"然后会提示他们选择主要单词。

所以使用以下作为例子:

Small Businesses    
    retailers; merchants; traders; wholesalers; vendor; 

Postal Service/Courier  
    parcel; package; post; postal service; delivery; courier; shipment; carting; dispatch

Business community  
    commerce; trade, career 

因此,如果用户开始为零售商输入r..e..t ..等等,那么他们就会得到主要的词/短语" Small Businesses"

我认为这可以使用optgroups来完成,但我不确定它是否可行,如果可以的话,如何去做。我需要一些类似于optgroups工作的东西,但反之亦然。

任何想法都会很棒!

1 个答案:

答案 0 :(得分:1)

如果可以使源数组包含带有标签/值对的对象,则可以允许这些值为数组并在the source option的自定义函数中解析它们。例如:

$( "#tags" ).autocomplete({
    source: function(request,response) {
        var responseItems = [], matches = false;
        for(var i in availableTags) {
            var tag = availableTags[i];
            if ($.isArray(tag.value)) {
                tag.value.forEach(function(val) {
                    matches |= val.indexOf(request.term) !== -1;
                });
            }
            else {
                matches = tag.value.indexOf(request.term) !== -1;
            }

            if (matches) {
                responseItems.push(tag.label);
            }
        }
        response(responseItems);
    }
});

以上是一个工作小提琴:http://jsfiddle.net/6osjwgpt/