jQuery-搜索表以查找不同列中的部分匹配项

时间:2018-09-08 12:03:55

标签: javascript jquery

我正在使用以下代码对表进行实时搜索。这适用于一列中的匹配项,但我希望它匹配多个列。

例如,如果我有一个名为“某些产品”的产品和一个名为“某些类别”的类别,则搜索:

“产品猫”

将匹配两列。我知道数据表可以做到这一点(请参见屏幕截图),但是希望尽可能少地依赖:

datatables example

jQuery代码:

$("#order_search").keyup(function () {
    var value = this.value.toLowerCase().trim();

    $("table tr").each(function (index) {
        if (!index) return;
        $(this).find("td").each(function () {
            var id = $(this).text().toLowerCase().trim();
            var not_found = (id.indexOf(value) == -1);
            $(this).closest('tr').toggle(!not_found);
            return not_found;
        });
    });
});

这是桌子

<th>Part</th>
<th>Category</th>
<th>Quantity (Stock)</th>
<th>Date Ordered</th>
<th>Date Required (Days)</th>
<th>Date Completed</th>
<th>Update</th>

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为切换是这里的关键。

我建议采用一种更简单的方法,该方法不需要对现有数据进行任何修改,也不需要支持多个用空格分隔的搜索词,例如:

$("#order_search").on('keyup', function () {
   var value = $.trim($(this).val());
   var vx = new RegExp('(' + value.split(" ").join(".*") + ')', "ig");
   $("table tr").each(function () {
      $(this).toggle(vx.test(String($(this).children().text())));
   });
});