jQuery dataTables 搜索 - 设置搜索过滤器以仅获取以搜索值开头的匹配项
jQuery dataTables search - Set search filter to get only matches that starts like search value
如果您在数据 table 中搜索一个词,它将在一个词的任何位置找到。
示例:在 table 中搜索 "b":
banana
subway
sub
将 return 全部 3.
如果我在搜索字段中输入 "b",我如何设置为只获取 "banana"。
我敢假设您正在考虑 jQuery 数据表(也替换了含糊不清的 datatable tag with the correct jquery-datatables 标签)。
如果您想过滤列数据的开头,而不是搜索/过滤整个字符串,您可以创建自定义过滤函数。像这样,这也是不区分大小写的:
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
//$('#example_filter input') is the default #example filter box
var term = $('#example_filter input')
.val()
.toLowerCase();
for (var i=0;i<data.length;i++) {
value = data[i]
.toString()
.toLowerCase();
if (value.indexOf(term)==0) {
return true;
}
};
return false;
}
);
查看演示 -> http://jsfiddle.net/v1yguqLz/
注意 :根据文档以及数据表在 "the old days" 中的工作方式,这应该是 regular expression search, but I cannot get even the simpliest regular expression example to work, neither by table.search()
nor table.column().search()
. Have tried with 1.10.0 through to 1.10.5 (recent version). I guess this has something to do with this bugreport -> https://github.com/DataTables/DataTables/issues/341 和向后兼容性的任务.
另一方面,如果您只想过滤列数据的开头,那么自定义过滤功能无论如何都是完美的解决方案。
我有一个用于其中一列的单独搜索字段,这是我的开头搜索解决方案:
vm.searchForLocation = function() {
vm.dtInstance.DataTable.column(2)
.search("^"+vm.locationCode, true, false )
.draw();
}
如果您在数据 table 中搜索一个词,它将在一个词的任何位置找到。
示例:在 table 中搜索 "b":
banana
subway
sub
将 return 全部 3.
如果我在搜索字段中输入 "b",我如何设置为只获取 "banana"。
我敢假设您正在考虑 jQuery 数据表(也替换了含糊不清的 datatable tag with the correct jquery-datatables 标签)。
如果您想过滤列数据的开头,而不是搜索/过滤整个字符串,您可以创建自定义过滤函数。像这样,这也是不区分大小写的:
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
//$('#example_filter input') is the default #example filter box
var term = $('#example_filter input')
.val()
.toLowerCase();
for (var i=0;i<data.length;i++) {
value = data[i]
.toString()
.toLowerCase();
if (value.indexOf(term)==0) {
return true;
}
};
return false;
}
);
查看演示 -> http://jsfiddle.net/v1yguqLz/
注意 :根据文档以及数据表在 "the old days" 中的工作方式,这应该是 regular expression search, but I cannot get even the simpliest regular expression example to work, neither by table.search()
nor table.column().search()
. Have tried with 1.10.0 through to 1.10.5 (recent version). I guess this has something to do with this bugreport -> https://github.com/DataTables/DataTables/issues/341 和向后兼容性的任务.
另一方面,如果您只想过滤列数据的开头,那么自定义过滤功能无论如何都是完美的解决方案。
我有一个用于其中一列的单独搜索字段,这是我的开头搜索解决方案:
vm.searchForLocation = function() {
vm.dtInstance.DataTable.column(2)
.search("^"+vm.locationCode, true, false )
.draw();
}