当前位置: 首页 > 面试题库 >

如何在HTML表格上执行实时搜索和过滤

翟俊茂
2023-03-14
问题内容

我一直在Google搜索和搜索Stack Overflow已有一段时间,但是我无法解决此问题。

我有一个标准的HTML表,其中包含水果。像这样:

<table>
   <tr>
      <td>Apple</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Grapes</td>
      <td>Green</td>
   </tr>
   <tr>
      <td>Orange</td>
      <td>Orange</td>
   </tr>
</table>

在此上方,我有一个文本框,我想在用户输入时搜索表格。因此,Gre例如,如果键入,表的橙色行将消失,剩下苹果和葡萄。如果他们继续打字Green Gr,苹果排应该消失,只剩下葡萄。我希望这很清楚。

而且,如果用户从文本框中删除部分或全部查询,我希望现在重新出现与查询匹配的所有行。

虽然我知道如何在jQuery中删除表格行,但我对如何进行搜索以及根据此选择性地删除行一无所知。有一个简单的解决方案吗?还是插件?

如果有人能指出我正确的方向,那就太好了。

谢谢。


问题答案:

我创建了这些示例

简单的indexOf搜索

var $rows = $('#table tr');
$('#search').keyup(function() {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();

    $rows.show().filter(function() {
        var text = $(this).text().replace(/\s+/g, ' ').toLowerCase();
        return !~text.indexOf(val);
    }).hide();
});

正则表达式搜索

使用正则表达式的更高级功能将使您可以按任意顺序搜索行中的单词。它将工作一样,如果你键入apple greengreen apple

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();
});

Debounce

在通过搜索多行和多列来实现表过滤时,考虑性能和搜索速度/优化非常重要。简而言之,您不必在每个按键上都运行搜索功能,这是没有必要的。为了防止过滤运行得太频繁,您应该对它进行反跳处理。上面的代码示例将变为:

$('#search').keyup(debounce(function() {
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase();
    // etc...
}, 300));

您可以选择任何反跳实现,例如从Lodash_.debounce中进行选择,也可以使用非常简单的方式



 类似资料:
  • 问题内容: 我有一个搜索输入,当我输入内容时,该输入会将数据从输入发送到php文件。php文件对我的数据库进行搜索,并显示搜索选项列表。您知道,ajax风格的实时搜索。 我的问题是,如果您输入的内容非常快,即使输入了另外10个字母,它也可能只搜索前1或2个字母。这引起一些问题。 我的jQuery看起来像这样: 和 所以我很好奇,如何使脚本等到我完成输入后再运行该函数?我的逻辑是说,例如,如果200

  • 请帮帮我!导航到某个页面后,selenium webdriver应按control F并使用robot类搜索数字。我尝试过使用actions类,但是不起作用。所以,我使用了机器人类。 正在工作。但是,如何发送我想要搜索/查找的号码。 另外,如果可能,请告诉我如何使用模式集从页面中搜索特定字符串。 更新:dr.findElement(By.xpath(//input[@name='regno'])。

  • 本文向大家介绍如何在HTML中创建表格的行和列?,包括了如何在HTML中创建表格的行和列?的使用技巧和注意事项,需要的朋友参考一下 要在HTML中创建表的行和列,请使用<table>标记。一个表由行和列组成,可以使用一个或多个<tr>,<th>和<td>元素进行设置。表行由<tr>标记定义。对于表的行和列,分别使用<tr>标记和<td>标记。<td>标签 请记住,HTML5不支持许多表格属性,例如

  • 问题内容: 我有一个从数据库返回的数据(字节格式)创建的文件有问题。 问题是文件中有一些换行符。 我想知道是否有一种方法可以编写where子句来检查某些记录是否具有换行符? 问题答案: 使用CHR函数查找ASCII值: 如果要搜索回车,则为chr(13)。

  • 是一种设计标准,但有一个缺陷,它的(通常我会将代码放在此处进行搜索而不进行筛选)不被调用。 如果您只想在而不是中执行搜索,则会出现问题。 当查询字符串为空时,而且我不想在用户只是为了键入其他内容而擦除它时进行搜索--只有在故意删除文本筛选时才进行搜索。 我使用的是,因为设计要求始终可见的搜索栏--但即使情况并非如此,也只有当您在第二次单击“X”图标时“图标化”SearchView时才会调用。 最佳

  • 我正在使用google电子表格API v4 for java。 我的电子表格看起来像这样- 我想查找带有用户“User2”和时间银行(空值)的行索引。之后,我想使用此行索引在该行中添加时间值。是否可以在不知道范围或索引的情况下逐行搜索单元格值? 在上面的示例中,当它与条件(User='User2'和Time='')匹配时,它应该只返回最后一行索引。甚至更好的是,是否存在查找和替换API,它将查找行