如何在 Jquery 数据表中应用搜索词?

How to apply Search term in Jquery Datatables?

我正在使用 Jquery 数据表,我希望如果我搜索 "car",它需要突出显示 "Car"、"CAR"、"caR" , "C a-r" "C -ar" 等等。目前,如果我搜索汽车,它不会显示 Ca-r 或 C -ar。我怎样才能做到这一点?请帮忙谢谢!

您可以创建自己的自定义过滤函数来处理这样的情况:

var table = $('#datatable').DataTable();

$.fn.dataTable.ext.search.push(
  function(settings, data, dataIndex) {
    // apply your custom filtering logic here
  }
);

$('#datatable_filter input').keyup(function() {
  table.draw(); // Redraw the table when the search input field is changed
});

请参阅文档 here, and an example here

扩展答案:

这里没有什么特别聪明的地方,代码只是从 table 单元格中的数据中删除任何 spaceshyphens 并根据它进行比较.如果您需要更强大的功能,则需要查看 regular expressions.

$(document).ready(function() {
  var table = $('#datatable').DataTable();

  $.fn.dataTable.ext.search.push(

    function (settings, data, dataIndex) {        
    var origInput = $('#search').val().toLowerCase();        
    var input = $('#search').val().replace(/\ /g, '').toLowerCase();        
    var strSearch = data.toString();
    
    strSearch = strSearch.replace(/\ /g, '');
    strSearch = strSearch.replace(/\-/g, '');

    if (input.length == 0) {
        return true;
    } else if (data.toString().toLowerCase().indexOf(origInput) >= 0) {            
        return true;        
    } else if (strSearch.toLowerCase().indexOf(input) >= 0) {
        return true;
    }
    return false;
});

  $('#search').keyup(function() {
    table.draw(); // Redraw the table when the search input field is changed
  });
});

更新了演示 here