search()
搜索表格中的数据。
描述
能够搜索表格中的数据是 DataTables 概念的核心,因为它允许用户轻松访问数据。此方法提供了通过 API 控制表格全局搜索的能力。全局搜索在所有可搜索列中执行(请参阅 columns.searchable
以禁用某些列的搜索)。如果在任何列中找到匹配的数据,则整个行都将匹配并在结果集中显示。可以使用 columns().search()
和 column().search()
方法对单个列执行搜索。
DataTables 具有一个称为“智能”搜索的内置搜索算法,旨在使表格数据的搜索对最终用户来说易于使用。DataTables 中的智能搜索提供了以下功能
- 乱序匹配单词。例如,如果您搜索
Allan Fife
,它将匹配包含单词Allan
和Fife
的行,无论它们在表格中出现的顺序或位置如何。 - 部分单词匹配。由于 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()
以更新表格的视图。- 参数
名称 类型 可选 1 字符串|正则表达式|函数
否 要应用于表格的搜索。
从 DataTables 2 开始,此参数可以作为正则表达式或函数给出。
如果使用正则表达式,请注意正则表达式将应用于单个字符串,该字符串包含来自所有可搜索列的搜索数据(用双空格连接)。
在函数的情况下,将为每一行调用该函数,并传入三个参数
- 表格中所有可搜索列的搜索数据字符串
- 行的原始数据对象
- 行的索引
应返回一个布尔值:
true
保留行,false
过滤掉行。请注意,如果为此参数提供了正则表达式或函数,则以下参数将被忽略。
2 options
否 如何执行搜索的配置选项。有关所有选项的说明,请参阅
DataTables.SearchOptions
。如果此处未给出选项,则将使用先前搜索为其设置的值。- 返回值
DataTables API 实例
函数 search( input [, regex[ , smart[ , caseInsen ]]] )
- 描述
设置要在表格上使用的全局搜索。请注意,从 DataTables 2 开始,首选上述签名,因为它提供了其他选项。保留此签名是为了向后兼容。
- 参数
名称 类型 可选 1 input
否 要应用于表格的搜索。有关完整详细信息,请参阅上面签名中的
input
参数。2 regex
是 - 默认值:false 视为正则表达式(
true
)还是不视为正则表达式(默认值,false
)。3 smart
是 - 默认值:true 执行智能搜索(默认值,
true
)还是不执行(false
)。有关智能搜索的说明,请参见下文。请注意,要执行智能搜索,DataTables 使用正则表达式,因此,如果使用此方法的第二个参数启用正则表达式,则您可能希望禁用智能搜索,否则这两个正则表达式可能会发生冲突并导致意外结果。
4 caseInsen
是 - 默认值:true 执行不区分大小写的匹配(默认值,
true
)还是不执行(false
)。- 返回值
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();
相关
以下选项与之直接相关,并且在您的应用程序开发中也可能有用。