javascript - 具有多选选项的 jQuery 过滤器

标签 javascript jquery html filter crud

我如何在 jquery 中使用多个选择进行过滤?

如果我有这样的表:

$('#mask').on('change', function(){
  var isiwak = $('.wak').val();
  var isi = $("#mask").val();


  if(isiwak=="allwak" && isi == "all"){
    $(".allshow").show();
  } else {
    $("td:not(."+isi+")").parent().hide();
    $("."+isi).parent().show();
  }
});

//OnChange waktu 
$('.wak').on('change', function(){
  var isiwak = $('.wak').val();
  var isi = $("#mask").val();


  if(isiwak=="allwak" && isi == "all"){
    $(".allshow").show();
  } else {
    $("td:not(."+isiwak+")").parent().hide();
    $("."+isiwak).parent().show();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
  <thead>
    <tr>
      <th>No</th><th>Nama Maskapai</th><th>Jam Terbang</th><th>Action</th>
    </tr>
  </thead>
  <tbody id="data">
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">02:09</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="pagi">01:08</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="siang">12:12</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="malam">19:20</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">09:12</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="pagi">10:20</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="siang">12:12</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="malam">19:20</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="siang">12:12</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>

    <tr class="allshow">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">19:20</td>
      <td><a href="#" onclick="deleteRows(this)">Delete</a> <a href="#" class="naik">Up</a> <a href="#" class="turun">Down</a></td>
    </tr>
  </tbody>
</table>

<select id="mask">
  <option value="all"> -Pilih Maskapai- </option>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>

<select class="wak">
  <option value="allwak"> -Pilih Waktu- </option>
  <option value="pagi">pagi</option>
  <option value="siang">siang</option>
  <option value="malam">malam</option>
</select>

我想用两个选择进行过滤,第一个选择是“nama maskapai”,第二个选择是“jam terbang”,其中“jam terbang”有类“pagi”、“siang”、“malam”。

如果我选择“nama maskapai”,我想使用 2 个选择,它们将显示所有“nama maskapai”以及选择。

这段代码只能用一个选择选项进行过滤。

最佳答案

你只能创建一个过滤函数,看起来像这样:

$(document).ready(function() {
  $('#mask').on('change', function() {
    filter();
  });

  //OnChange waktu 
  $('.wak').on('change', function() {
    filter();
  });

  function filter() {
    var isiwak = $('.wak').val();
    var isi = $("#mask").val();

    var $all = $(".allshow");
    $all.hide()

    if (isiwak === "allwak" && isi === "all") {
      $all.show();
    } else if (isiwak === "allwak" && isi !== "all") {
      $all.children("." + isi).parent().show()
    } else if (isiwak !== "allwak" && isi === "all") {
      $all.children("." + isiwak).parent().show()
    } else {
      $all.children("." + isiwak).parent().children("." + isi).parent().show();
    }

  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
  <thead>
    <tr>
      <th>No</th>
      <th>Nama Maskapai</th>
      <th>Jam Terbang</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody id="data">
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">02:09</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="pagi">01:08</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="siang">12:12</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="malam">19:20</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">09:12</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="pagi">10:20</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="c">c</td>
      <td class="siang">12:12</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="malam">19:20</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow" style="">
      <td class="num"></td>
      <td class="a">a</td>
      <td class="siang">12:12</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
    <tr class="allshow">
      <td class="num"></td>
      <td class="b">b</td>
      <td class="pagi">19:20</td>
      <td>
        <a href="#" onclick="deleteRows(this)">Delete</a>
        <a href="#" class="naik">Up</a>
        <a href="#" class="turun">Down</a>
      </td>
    </tr>
  </tbody>
</table>
<select id="mask">
  <option value="all">-Pilih Maskapai-</option>
  <option value="a">a</option>
  <option value="b">b</option>
  <option value="c">c</option>
</select>
<select class="wak">
  <option value="allwak">-Pilih Waktu-</option>
  <option value="pagi">pagi</option>
  <option value="siang">siang</option>
  <option value="malam">malam</option>
</select>

在最后一个 else 中,您过滤一个选择,然后获取结果并过滤第二个。

这是 plunker如果你愿意的话。

关于javascript - 具有多选选项的 jQuery 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660369/

相关文章:

javascript - 无法使用 Angular 服务处理 onbeforeunload 事件

html - 无法获得证明内容 : space-between to work in Bootstrap framework

html - CSS 边距问题

javascript - 在第三方网站上推送 html5 通知时如何执行代码

javascript - 单击按钮时 Vue 方法被调用两次

javascript - 如何获取这个 DOM 结构的引用?

jquery - 具有任意捕捉点的范围 slider

javascript - 我可以通过键入代码而不是单击 <a> 元素来访问 URL 吗?

javascript - $.position 在滚动 div 中为同一个选择器返回不同的值

javascript - div 的左侧元素为空字符串