Javascript 如何使用JS搜索表并只返回匹配的行?

Javascript 如何使用JS搜索表并只返回匹配的行?,javascript,jquery,html,search,html-table,Javascript,Jquery,Html,Search,Html Table,我有一个如下所示的HTML表: 实际的表非常长,我希望能够搜索条目,并返回匹配的结果 我当前正在使用以下代码进行搜索(从): 但是有个问题。当我搜索Foo Bar时,我希望它返回: 现在,它返回以下内容: 我怎样才能解决这个问题?这可以通过调整正则表达式来实现吗?我没有主意了 将您的表格组织成多个t主体组(是),并在其中进行搜索。 var$rows=$(“#table tbody”); $(“#搜索”).keyup(函数(){ var val='^(?=.\\b'+$.trim($(thi

我有一个如下所示的HTML表:

实际的表非常长,我希望能够搜索条目,并返回匹配的结果

我当前正在使用以下代码进行搜索(从):

但是有个问题。当我搜索
Foo Bar
时,我希望它返回:

现在,它返回以下内容:

我怎样才能解决这个问题?这可以通过调整正则表达式来实现吗?我没有主意了


将您的表格组织成多个
t主体
组(是),并在其中进行搜索。
var$rows=$(“#table tbody”);
$(“#搜索”).keyup(函数(){
var val='^(?=.\\b'+$.trim($(this).val()).split(/\s+/).join('\\b)(?=.\\b')+')).$,
reg=RegExp(val,'i'),
文本;
$rows.show().filter(函数(){
text=$(this.text().replace(/\s+/g');
返回!注册测试(文本);
}).hide();
});
正文{
填充:20px;
}
输入{
边缘底部:5px;
填充物:2个3个;
宽度:209px;
}
运输署{
填充:4px;
边框:1px#CCC实心;
宽度:100px;
}

富吧
卷号:
某物
某物
东西
某物
东西
巴兹巴克
卷号:
某物
某物
东西
某物
东西
巴兹酒吧
卷号:
某物
某物
东西
某物
东西

将您的表格组织成多个
t主体
组(是),并在其中进行搜索。
var$rows=$(“#table tbody”);
$(“#搜索”).keyup(函数(){
var val='^(?=.\\b'+$.trim($(this).val()).split(/\s+/).join('\\b)(?=.\\b')+')).$,
reg=RegExp(val,'i'),
文本;
$rows.show().filter(函数(){
text=$(this.text().replace(/\s+/g');
返回!注册测试(文本);
}).hide();
});
正文{
填充:20px;
}
输入{
边缘底部:5px;
填充物:2个3个;
宽度:209px;
}
运输署{
填充:4px;
边框:1px#CCC实心;
宽度:100px;
}

富吧
卷号:
某物
某物
东西
某物
东西
巴兹巴克
卷号:
某物
某物
东西
某物
东西
巴兹酒吧
卷号:
某物
某物
东西
某物
东西

之所以发生这种情况,是因为实际上只有一行包含Foo-Bar。该表看起来很好,因为rowspan在UI中负责该表。但在DOM中,只有一行包含“foobar”

所以你能做的就是把你的算法改成搜索。您可以为该函数中的每个tr调用一个函数

  • 检查你的字符串
  • 如果它与搜索字符串匹配,则将该行存储在虚拟表中
  • 转到下一个迭代
  • 检查
    的数量是否为2或更少。如果是,则将其附加到虚拟表中
  • 如果
    s的编号为3,则表示您已到达下一合法行。停止此操作并在UI中显示虚拟表

  • 发生这种情况是因为实际上只有一行包含Foo-Bar。该表看起来很好,因为rowspan在UI中负责该表。但在DOM中,只有一行包含“foobar”

    所以你能做的就是把你的算法改成搜索。您可以为该函数中的每个tr调用一个函数

  • 检查你的字符串
  • 如果它与搜索字符串匹配,则将该行存储在虚拟表中
  • 转到下一个迭代
  • 检查
    的数量是否为2或更少。如果是,则将其附加到虚拟表中
  • 如果
    s的编号为3,则表示您已到达下一合法行。停止此操作并在UI中显示虚拟表


  • 您是只想搜索
    Foo Bar
    ,还是所有单元格?根据您的标记,这些单元格工作正常。@Mooseman:整个表。@Jai:是的,但是有没有办法修改它以返回上述结果?@JosephJohn Done。请看我的答案。是只搜索
    Foo-Bar
    ,还是搜索所有单元格?根据您的标记,这些单元格工作正常。@Mooseman:整个表格。@Jai:是的,但是有没有办法修改它以返回上述结果?@JosephJohn Done。请看我的答案。很好的解决方案伙伴:)必须接受非常有效的解决方案:)你就是那个人,穆塞曼!谢谢-这正是我所需要的:)@JosephJohn很乐意帮忙!:)很好的解决方案伙伴:)必须接受非常有效的解决方案:)你就是那个人,穆塞曼!谢谢-这正是我所需要的:)@JosephJohn很乐意帮忙!:)
    var $rows = $('#table tr');
    $('#search').keyup(function() {
    
        var val = '^(?=.*\\b' + $.trim($(this).val()).split(/\s+/).join('\\b)(?=.*\\b') + ').*$',
            reg = RegExp(val, 'i'),
            text;
    
        $rows.show().filter(function() {
            text = $(this).text().replace(/\s+/g, ' ');
            return !reg.test(text);
        }).hide();
    });