描述(Description)
检索数据是表概念的核心,该方法允许用户轻松访问数据。该方法提供通过API控制表的全局搜索的能力。全局搜索在所有可搜索的列中执行(参考
columns.searchableOption
禁止搜索某些列)。
如果发现数据在任何列中匹配,则整行匹配并显示在结果集中。可以使用
columns().search()API
和
column().search()API
方法来执行各个列的搜索。
DataTables有一个内置的搜索算法,称为“smart”搜索,旨在搜索表格数据,方便最终用户使用。smart搜索提供以下功能:
- 匹配无序单词(Match words out of order)。例如你搜索
Allan Fife
,它将匹配包含单词Allan
和Fife
的行,而不管他们在表格中的顺序或位置如何。 - 部分字符匹配(Partial word matching)。随着用户在输入框里输入字符,DataTables将给出及时过滤,单词的部分可以在结果集中匹配。比如,
All
将会匹配Allan
。 - 保留文本(Preserved text)。1.10+版本提供了搜索文本可以包含双引号,来搜索确切短语的功能。比如
Allan Fife
将只会匹配包含Allan Fife
的文本,Allan is in Fife
将不会匹配。
smart搜索是用正则表达式实现,可以使用此方法的第三参数启用或者禁用。如果你希望使用自定义正则表达式,比如,要执行全字精确匹配,你需要启用正则表达式选项(第二个参数),并禁用smart搜索选项(第三个参数),以确保两者不冲突。
DataTables提供了一个工具方法(
$.fn.dataTable.util.escapeRegex()API
)来转义正则表达式特殊字符,如果用户输入和正则表达式混合,这个方法将非常有用。
请注意,smart搜索实际上是一个过滤器,因为它是减法操作。但是,我们在术语上命名为 search 是为了避免和
filter()API
辅助方法相冲突。
请注意,此方法并不执行搜索操作,为了执行搜索并显示结果,请使用
draw()API
方法,例如:table.search( 'Fred' ).draw();
.
这是为了在重绘前,还可以执行其他操作,然后一并显示结果。
类型(Type)
这个选项能够接受以下类型的参数:
function search()
描述(Description):
获取当前全局搜索词。如果当前有多个DataTables实例对象,将返回找到的第一个实例对象的搜索词。使用
table()API
来获取不同表格实例。
返回(Returns):
当前全局搜索的词语。如果没有,将返回空字符串。
function search( input [, regex[ , smart[ , caseInsen ]]] )
描述(Description):
设置全局搜索应用到表格中。注意,如果要把搜索结果显示在表格中,还需要执行
draw()API
方法。
参数(Parameters):
名称(Name) | 类型(Type) | 是否可选(Optional) | |
---|---|---|---|
1 | input |
stringType
|
No |
应用于表格搜索的字符串 | |||
2 | regex |
booleanType
|
Yes - default:false |
作为正则表达式(true)或不作为(默认为false) | |||
3 | smart |
booleanType
|
Yes - default:true |
执行内置搜索算法(默认为true)或者不执行(false)。在使用此参数前,确保第二个参数是false,不然两个正则表达式可能冲突导致意想不到的结果。 如果你不想使用内置算法搜索,置为false,第二个参数为true,即可自定义正则表达式搜索。 | |||
2 | caseInsen |
booleanType
|
Yes - default:false |
不区分大小写匹配(默认为true)或者区分大小写匹配(false) |
返回(Returns):
DataTables API 实例对象
例子(Example)
使用自定义的输入框过滤表格数据,#myInput
是一个 <input type="text">
元素
1
2
3
4
5
var table = $('#example').DataTable();
$('#myInput').on( 'keyup', function () {
table.search( this.value ).draw();
} );
使用自定义正则表达式完全匹配字符:
1
2
3
4
5
6
var table = $('#example').DataTable();
var columnNo = 1;
var myValue = $('#myInput').val();
var regExSearch = '^\\s' + myValue +'\\s*$';
table.column(columnNo).search(regExSearch, true, false).draw();
相关属性(Related)
下面的选项是直接相关的,也可能是您的应用程序的开发非常有用。
API
Options