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

时间:2015-07-23 08:03:10

标签: jquery datatables

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

1 个答案:

答案 0 :(得分:1)

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

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和示例here

扩展回答:

这里没有什么特别聪明,代码只是从表格单元格中的数据中删除任何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