Javascript 如果未找到匹配值,jQuery ui自动完成显示所有值

Javascript 如果未找到匹配值,jQuery ui自动完成显示所有值,javascript,jquery,jquery-ui,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui,Jquery Ui Autocomplete,jQuery是否可以自动完成,以便如果有可用的“source:”值,但它们与您键入的内容不匹配,那么一次只显示所有源代码 例如,给定以下代码,如果我输入“菠萝”,如何显示所有编程语言而不是它们中的任何一种 <script> $(function() { var availableTags = [ "JavaScript", "Perl", "PHP", "Python", "Ruby" ]

jQuery是否可以自动完成,以便如果有可用的“source:”值,但它们与您键入的内容不匹配,那么一次只显示所有源代码

例如,给定以下代码,如果我输入“菠萝”,如何显示所有编程语言而不是它们中的任何一种

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

$(函数(){
var availableTags=[
“JavaScript”,
“Perl”,
“PHP”,
“Python”,
“红宝石”
];
$(“#标记”).autocomplete({
资料来源:availableTags
});
});

只需编写一个自定义的
回调

例如:

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

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

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

$(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);
        }
    });
});​

真棒。不过有个问题,我也不知道怎么解决。它说“tag.toLowerCase”不是一个函数。标签是空的吗?我真是笨透了…看修改后的答案。小提琴(原版和最新版本)似乎适合我。是的,我得摆弄它。我的标签是一组我认为。。。嗯……这个例子应该可以做一些小的修改,也许
tag.toLowerCase()
应该是
tag.label.toLowerCase()
。没错,我试过tag.label,但失败了。我的来源是这样的目前。。。var-resArr=[];var resObj=新对象();resObj.value=新对象();resObj.value.val1=x;resObj.value.val2=y;resObj.label=z;resObj.desc=a;再吸收推压(再吸收);
$(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);
        }
    });
});​