jQuery使用包含多个过滤器的正则表达式过滤内容?

时间:2016-09-08 05:52:43

标签: jquery regex filter

我有一个页面,我发布内容块(非常像this page上的评论),每个块包含月份和年份(日期)和评论。所以它看起来像这样:

  

2016年8月评论/文字在这里。

根据instructions here,我在我的网站上加入了相同的过滤脚本,以便快速搜索该页面上的内容。

$("#filter").keyup(function(){

    // Retrieve the input field text and reset the count to zero
    var filter = $(this).val();

    // Loop through the comment list
    $(".articles li").each(function(){

        // If the list item does not contain the text phrase fade it out
        if ($(this).text().search(new RegExp(filter, "i")) < 0) {
            $(this).fadeOut();

        // Show the list item if the phrase matches and increase the count by 1
        } else {
            $(this).show();
        }
    });
});

但是,现在我已经为月和年添加了两个选择下拉元素,我只是将#filter引用更改为#month,#year(搜索那两个ID为那些的元素) ,分别),所以我有这样的事情:

<select id="year" name="year">
<option value="">Year</option>
<option value="2016">2016</option>
...
</select>

和月份相同:

<select id="month" name="month">
<option value="">Month</option>
<option value="January">January</option>
...
</select>

这两个的jQuery搜索/过滤器如下所示:

$("#year,#month").change(function(){
        // Retrieve the input field text and reset the count to zero
        var filter_year = $("#year").val();
        var filter_month = $('#month').val();
        var filter_date = $('#month').val() + ' ' + $('#year').val();

        // Loop through the article list
        $(".articles li").each(function(){

            // If the list item does not contain the text phrase fade it out
            if ($(this).find("span.date").text().search(new RegExp(filter_date, "i")) < 0) {
                $(this).fadeOut();
                // Show the list item if the phrase matches and increase the count by 1
            } else {
                $(this).show();
            }
        });
    });

我必须在 filter_date 变量中将它们连接起来,因为当我更改任何一个时,我无法弄清楚如何搜索月份和年份,否则我和#39 ; d得到的结果由两者中的任何一个过滤,但不是两者都过滤。

现在,我的问题是如何将上面的两个代码块合并为一个代码或让它们一起工作,这样如果我在#filter输入字段中键入内容并从Month /中选择一个(或两个)选项年份下拉菜单,我怎样才能让所有这三个过滤器齐心协力搜索特定年/月发布的文章AS WELL AS包含某些文本?因为现在它是/或者两者都不是。

建议?

0 个答案:

没有答案