{hero}

search()

自 DataTables 1.10 起

搜索表格中的数据。

描述

能够搜索表格中的数据是 DataTables 概念的核心,因为它允许用户轻松访问数据。此方法提供了通过 API 控制表格全局搜索的能力。全局搜索在所有可搜索列中执行(请参阅 columns.searchable 以禁用某些列的搜索)。如果在任何列中找到匹配的数据,则整个行都将匹配并在结果集中显示。可以使用 columns().search()column().search() 方法对单个列执行搜索。

DataTables 具有一个称为“智能”搜索的内置搜索算法,旨在使表格数据的搜索对最终用户来说易于使用。DataTables 中的智能搜索提供了以下功能

  • 乱序匹配单词。例如,如果您搜索 Allan Fife,它将匹配包含单词 AllanFife 的行,无论它们在表格中出现的顺序或位置如何。
  • 部分单词匹配。由于 DataTables 提供了即时反馈给用户的动态过滤,因此可以在结果集中匹配部分单词。例如,All 将匹配 Allan
  • 保留文本。DataTables 1.10 添加了通过将搜索文本括在双引号中来搜索精确短语的功能。例如,"Allan Fife" 仅匹配包含短语 Allan Fife 的文本。它不会匹配 Allan is in Fife

DataTables 的智能搜索功能是使用正则表达式执行的,可以通过此方法的第三个参数启用或禁用。如果您希望使用自定义正则表达式,例如执行整个单词精确匹配,则需要启用正则表达式选项(第二个参数)并禁用智能搜索选项(第三个参数),以确保两者不冲突。DataTables 提供了一个实用程序方法 (DataTable.util.escapeRegex()) 来转义正则表达式特殊字符,如果您将用户输入与正则表达式混合使用,这将非常有用。

请注意,DataTables 中的此搜索功能实际上在技术上是一个过滤器,因为它具有减法性。但是,我们使用术语搜索来避免与 filter() 辅助方法发生命名冲突。

请注意,此方法设置搜索仅应用于表格 - 它实际上并不执行搜索。为了执行搜索并显示结果,请使用 draw() 方法,该方法可以简单地作为 search() 方法返回对象的链式方法调用 - 例如 table.search( 'Fred' ).draw();。这是为了提供在执行绘制之前排队多个更改的能力。

当使用服务器端处理时,必须在服务器端添加其他逻辑来处理正则表达式搜索项。此外,由于搜索函数基于客户端,因此无法通过函数进行搜索。

类型

函数 search()

描述

获取当前应用的全局搜索。如果 API 上下文中存在多个表格,则将返回第一个表格的搜索词。如果您需要 API 上下文中不同表格的搜索词,请使用 table()

返回值

当前应用的全局搜索。如果未应用任何搜索,则可能为空字符串。

函数 search( input [, options] )

描述

设置要在表格上使用的全局搜索以及配置选项。在设置搜索词后,调用 draw() 以更新表格的视图。

参数
返回值

DataTables API 实例

函数 search( input [, regex[ , smart[ , caseInsen ]]] )

描述

设置要在表格上使用的全局搜索。请注意,从 DataTables 2 开始,首选上述签名,因为它提供了其他选项。保留此签名是为了向后兼容。

参数
返回值

DataTables API 实例

示例

使用自定义输入搜索表格

let table = new DataTable('#example');

// #myInput is a <input type="text"> element
$('#myInput').on('keyup', function () {
	table.search(this.value).draw();
});

自定义搜索函数

let table = new DataTable('#example');

table.search((d) => d.includes('My search term')).draw();

// note that the above can also be rewritten as:
table
	.search(function (d) {
		return d.includes('My search term');
	})
	.draw();

自定义正则表达式搜索

let table = new DataTable('#example');

table.search(/\bTerm/i).draw();

相关

以下选项与之直接相关,并且在您的应用程序开发中也可能有用。