【问题标题】:Adding "no results" into search/filter script在搜索/过滤脚本中添加“无结果”
【发布时间】:2015-09-28 07:47:12
【问题描述】:

是的,我知道......另一个“没有结果”的问题......对此很抱歉,但我需要问一下,因为我现在已经和它斗争了几个小时,而且几乎没有任何效果。

我有一些脚本来过滤项目,我需要你的帮助来注入一些代码来显示“无结果”消息。

$("#my-search-input").keyup(function() {
    var search = $(this).val();
    $(".my-list").children().show();
    if (search)
       $(".my-list").children().not(":containsNoCase(" + search + ")").hide();
});


$.expr[":"].containsNoCase = function (el, i, m) {
    var search = m[3];
    if (!search) return false;
       return new RegExp(search,"i").test($(el).text());
};

这是我的小提琴: http://jsfiddle.net/bk13detv/22/

基本上消息应该显示在表格的每个实例中。

感谢您的宝贵时间,干杯。

【问题讨论】:

  • 你真的需要两张桌子吗?
  • @ZakariaAcharki 为什么你对他正在进行的项目很熟悉?
  • @ZakariaAcharki 是的,实际上还有更多......比如 20 个。每个表都是一种类别,我编写了基于 select 的过滤器(即第一个过滤器 -> 类别)和输入文本帮助用户最小化所选类别中的项目。更多更少:)

标签: javascript jquery search filter filtering


【解决方案1】:

你可以试试这样的:

    $("#my-search-input").keyup(function () {
        var search = $(this).val();
        $(".my-list").children().show();
        $('.noresults').remove();
        if (search) {
            $(".my-list").children().not(":containsNoCase(" + search + ")").hide();
            $(".my-list").each(function () {
                if ($(this).children(':visible').length == 0) 
                    $(this).append('<tr class="noresults"><td colspan="3"><em>No Results</em></td></tr>');
            });

        }
    });

请参阅此Fiddle 以获取演示。

【讨论】:

  • 您好 zgood,非常感谢您提供的代码和您的时间。这是一个聪明的解决方案,我必须承认我什至不接近我的;)你的时机也令人印象深刻;)干杯。
  • 嗨@zgood,我不知道这是否会改变一些东西,但我注意到了一些小的错误。使用 append 方法中的 tr, td,输入在搜索几次后执行了奇怪的循环,导致显示带有实际项目的错误消息。不幸的是我不能在小提琴上重复这个问题,所以也许我的其他脚本会干扰这里。无论如何,当我将“tr”更改为“span”并删除“td”时,问题不会再次出现。也许有人会有类似的问题,所以是的,值得一试。谢谢,干杯。
  • 嗨@zgood,似乎我发现了我正在谈论的那个错误。默认情况下,我的表格行不显示(类似于手风琴),并且在您的代码中有 :visible 选择器。有没有办法用一些可以同时使用可见元素和隐藏元素的解决方案替换该选择器? (':visible, :hidden') 不起作用。谢谢,干杯。
  • @eightythree 是的,看看我为你做的Fiddle。此方法使用一个类 (hiddenrow) 来显示/隐藏行,并将检查该类以显示 No Results 消息。如果这不起作用,请告诉我。谢谢
  • 哇,这实际上就像一个魅力,似乎是防弹解决方案:) 你是一个救生员,非常感谢你的时间和帮助。祝你周末愉快,干杯。
猜你喜欢
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 2013-02-02
  • 2012-07-05
  • 2017-05-17
相关资源
最近更新 更多