如果找不到匹配的值,jQuery-ui自动完成功能会显示所有值

时间:2012-12-04 19:21:23

标签: javascript jquery jquery-ui jquery-ui-autocomplete

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

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

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

2 个答案:

答案 0 :(得分: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);
        }
    });
});​

demo here

答案 1 :(得分:3)

只需编写自定义source回调。

例如:

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

See DOCs

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

source: function(req, res){
     //find `req` in array
     if not found:
     res(availableTags);
     else:
     res({subset of availableTags});
}