2

是否可以使用 jQuery 自动完成功能,以便如果有可用的“来源:”值,但它们与您输入的内容不匹配,那么只需一次显示所有来源?

IE,给定以下代码,如果我输入“菠萝”,你如何显示所有编程语言而不是一个都不显示?

<script>
$(function() {
    var availableTags = [
        "JavaScript",
        "Perl",
        "PHP",
        "Python",
        "Ruby"
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});
</script>
<input type="text" id="tags" />
4

2 回答 2

6

将该source属性与自定义函数一起使用。下面显示的自定义函数模仿自动完成的原始行为,在可用标签内搜索键入的文本作为子字符串。如果未找到匹配项,则返回所有可用标签。

$(function() {
    var availableTags = [
        "JavaScript",
        "Perl",
        "PHP",
        "Python",
        "Ruby"
    ];
    $("#tags").autocomplete({
        source: function(request, response) {
            var term = request.term.toLowerCase();
            var matchingTags = $.grep(availableTags, function(tag) {
                return tag.toLowerCase().indexOf(term) >= 0;
            });
            response(matchingTags.length ? matchingTags : availableTags);
        }
    });
});​

演示在这里

于 2012-12-04T19:34:58.707 回答
3

只需编写一个自定义source回调。

例如:

source: function(req, res){
    res(['w00t', 'yay']);
}

见文档

在您的情况下(伪代码):

source: function(req, res){
     //find `req` in array
     if not found:
     res(availableTags);
     else:
     res({subset of availableTags});
}
于 2012-12-04T19:22:31.227 回答