首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带复选框和搜索框的引导表过滤器- javascript

带复选框和搜索框的引导表过滤器- javascript
EN

Stack Overflow用户
提问于 2014-09-29 16:32:15
回答 1查看 1.6K关注 0票数 1

我有以下两个引导表过滤器的设置,它们各自完美地工作。但是,我很难“合并”他们在一起玩得很好:

代码语言:javascript
复制
  $("#filter").keyup ->
    rex = new RegExp($(this).val(), "i")
    $(".searchable tr").hide()
    $(".searchable tr").filter(->
        rex.test $(this).text()
      else
        rex.test $(this).text()
    ).show()
    $(".no-data").hide()
    $(".no-data").show()  if $(".searchable tr:visible").length is 0
    return

代码语言:javascript
复制
  $("#filterCheckBox").on "change", ->
    if @checked
      $(".searchable tr").hide()
      $(".searchable tr").filter(->
        $(this).find("td").eq(3).text() isnt 0
      ).show()
      $(".no-data").hide()
      $(".no-data").show()  if $(".searchable tr:visible").length is 0
    else
      $(".searchable tr").show()
      $(".no-data").hide()
    return

我的问题是,一个过滤器总是覆盖另一个过滤器。我已经尝试了相当多的合并,但没有运气或成功。

filterCheckBox应该比第一个过滤器“更强”。

编辑:这里是一个小提琴:http://jsfiddle.net/mtz1etfz/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 22:08:54

好吧-我修改了你的小提琴。

我增加了两个新功能:

代码语言:javascript
复制
function checkZero(currentTr){

            if(  $('#filter2').is(':checked'))
            {
               return ($(currentTr).find('td').eq(3).text() !== "0");     
            }else
            {
                return true;
            }
  }

  function matchesSearch(currentTr) {

              var rex = new RegExp($("#filter").val(), 'i');
              return rex.test($(currentTr).text());
  }

它们基本上封装了您在变更处理程序中所做的检查。然后,我还修改了您的更改处理程序--调用这两个函数。您希望同时应用这两个“过滤器”,因此必须同时检查这两种情况:

代码语言:javascript
复制
$('.searchable tr').filter(function () {
               return matchesSearch(this) && checkZero(this);
            }).show();

http://jsfiddle.net/mtz1etfz/1/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26104639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档