如何解决数据表 - 按字符串搜索,而不是子字符串
我一直在尝试在数据表中搜索完整字符串,而不是该字符串的子字符串。
我有用户名:Ivan Test 和 Test Usiver 如果我搜索“iv”或“Iv”结果,我希望只有“Ivan Test”,但我得到了两个用户,因为第二个用户包含在他的字符串“Test UsIVer”中
我试过这个:
$('#Tablicaracuni').DataTable().search($(this).val(),false,false);
还有这个
$('#Tablicaracuni').DataTable().search("^" + $(this).val() + "$",true,true).draw();
使用第二个函数时,会出现 ^ 和 $ 出现在搜索输入框中的错误,如下所示:
真假的所有随机组合,无法完全按照我想要的方式工作。
Stock 函数打印表格:
$('#Tablicaracuni').DataTable();
它不必是特定的列搜索,我希望所有列都可以搜索,例如如果我输入“d”,我希望所有柴油账单和所有用户的首字母为“d”。
解决方法
您可以使用 search plug-in 拦截搜索(过滤)事件,然后应用您自己的过滤逻辑。该插件已经可用 - 您无需添加。
以下是“以”开头的示例,还假设搜索不区分大小写:
$(document).ready(function() {
$('#example').DataTable( {
// your normal initialization options here
// no need for any special search options
} );
$.fn.dataTable.ext.search.push(
function( settings,searchData,index,rowData,counter ) {
var match = false;
var searchTerm = settings.oPreviousSearch.sSearch.toLowerCase();
searchData.forEach(function (item,index) {
if (item.toLowerCase().startsWith(searchTerm)) {
match = true;
}
} );
return match;
}
);
} );
假定搜索词已输入到标准全局搜索字段中,该字段由 DataTables 开箱即用提供。我们从 settings
获取用户输入的搜索词。
每个 searchData
代表一行数据,作为一个值数组 - 因此我们遍历每个值以寻找匹配项。
(如果您想将其更改为“完全匹配”,您将相应地更改 if
条件。这里唯一的缺点是用户体验可能有点令人惊讶。每次击键都会导致重新过滤数据。因此,您可能会发现每一行都消失了,直到您为某个字段键入了完全匹配项。在这种情况下,搜索“提交”按钮可能会提供更好的用户体验。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。