微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据表 - 按字符串搜索,而不是子字符串

如何解决数据表 - 按字符串搜索,而不是子字符串

我一直在尝试在数据表中搜索完整字符串,而不是该字符串的子字符串。

我有用户名:Ivan Test 和 Test Usiver 如果我搜索“iv”或“Iv”结果,我希望只有“Ivan Test”,但我得到了两个用户,因为第二个用户包含在他的字符串“Test UsIVer”中

enter image description here

我试过这个: $('#Tablicaracuni').DataTable().search($(this).val(),false,false); 还有这个 $('#Tablicaracuni').DataTable().search("^" + $(this).val() + "$",true,true).draw(); 使用第二个函数时,会出现 ^ 和 $ 出现在搜索输入框中的错误,如下所示:

enter image description here

真假的所有随机组合,无法完全按照我想要的方式工作。

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 举报,一经查实,本站将立刻删除。