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

标签 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();
            }
        });
    },
});

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

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

$(".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 项目都会隐藏,但那些不包含内容文本的项目应该可见。

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

最佳答案

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

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

此外,要使 :containes 不区分大小写:

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

关于javascript - Jquery 自动完成与响应,作为过滤功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480686/

相关文章:

javascript - React 路由器在 Express 服务器上不起作用

jquery - 响应式设计 : how to modify css grid sizes at different screen resolutions?

php - 视频灯箱有问题吗?

javascript - 单击按钮时 CSS 动画不会使用 Knockout 代码触发 - 并且不会调度单击事件

javascript - 如何在内容展开时更改 <div> 高度?

javascript - 自动完成与 keydown 混合

python - 在解释器忙碌时询问 Jedi/Auto Complete 信息时 Emacs 卡住

jsf - 如何在 <h :inputText>? 中禁用自动完成

javascript - 在 asp.net 中加载页面时如何添加 Ajax 加载器?

javascript - Jquery Ajax 和 Json : How to check if undefined