Jquery自动完成响应,作为过滤功能

时间:2016-07-20 11:58:45

标签: javascript jquery autocomplete

下面我有一些代码,这些代码很奇怪,我的意思是,它什么都不做,我认为:包含函数有一些问题

$(".search").autocomplete({
    source: availableTags,
    appendTo: ".autocomplete",
    minLength:3,

    response: function(event, ui) {
        var content =  ui.content[0].label;
        $.each($('.auto-sort'), function() {
            var t = $(this);
            if (("t:contains(content)")) {
                return;
            } else {
                $(this).parent().parent().parent().hide();
            }
        });
    },
});

主要是,当我在输入字段中输入内容时没有任何反应。我希望有一些项目,其中包含部分内容var文本。

如果我反转某些代码行,此代码会过滤所有项目:

$(".search").autocomplete({
source: availableTags,
appendTo: ".autocomplete",
minLength:3,

response: function(event, ui) {
    var content =  ui.content[0].label;
    $.each($('.auto-sort'), function() {
        var t = $(this);
        if (("t:contains(content)")) {
            $(this).parent().parent().parent().hide();
        } else {
           return;
        }
    });
},
});

现在上面这个工作了,但它选择了所有项目,例如,如果我输入“tes”到输入字段,则所有.auto-sort项都被隐藏,但那些不包含内容文本的项目应该是可见的。< / p>

问题出在哪里? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

排序的关键是将过滤器逻辑更改为:

if($(this).is(':contains('+content+')'))  {

另外,要使:包含不区分大小写:

$.expr[":"].contains = $.expr.createPseudo(function(arg) {
        return function( elem ) {
            return $(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;
        };
    });