如何使用jQuery DataTables插件在特定列中进行搜索?

4
我使用了jquery dataTable插件来展示一个包含用户名、日期和电子邮件的表格。我想禁用用户名和电子邮件列的筛选/搜索,并仅启用日期的搜索。当我点击搜索字段时,会打开一个日历以选择我们要查找的日期。
我只想使用这个插件来过滤日期。这可行吗?
-编辑-
我阅读了文档:dateRange 但它对我没有用。
('.dataTable').dataTable()
    .columnFilter({
        sPlaceHolder: "head:before",
        aoColumns: [null, { type: "date-range" }, null]
    });

我复制了标题,但是无法获取日期字段或任何其他字段以搜索数据。


阅读有关配置列和列选项的文档。 - charlietfl
谢谢,我已经阅读了。但是我没有得到结果。我添加了 `$('#example').dataTable() .columnFilter({ sPlaceHolder: "head:before", aoColumns: [ null, { type: "date-range" }, null ] });` 但是我看不到日期范围过滤器。 - Dev DOS
你误解了列配置中筛选器的作用。 - charlietfl
2个回答

14
你可以使用 column().search() 来在特定的值上进行搜索,例如:
  var table = $('#example-table').DataTable();

  $('#search-input').on('change', function(){

    table
    .column(4)
    .search(this.value)
    .draw();

  });

工作演示

参考资料


这个演示中无法搜索 :2009/01/12,我想要像这样搜索日期范围:http://jquery-datatables-column-filter.googlecode.com/svn/trunk/dateRange.html。你能帮我吗? - Dev DOS
请再次检查演示,这是标记问题而不是JavaScript代码的问题。关于您提到的插件,它是为DataTables 1.09设计的,我认为它与当前版本(1.11)不兼容,这就是为什么在您尝试时它无法工作的原因,但您仍然可以通过扩展$.fn.dataTable.ext.search函数来实现相同的行为,请参考此示例 - Walid Ammar

0

有多种方法可以实现这一点,其中之一是下面提到的方法,我个人认为这是最简单的方法。使用以下方法,您可以定义在使用datatable搜索时不要查找哪些列。

$('#example').dataTable( {
'columnDefs' : [
        { 
           'searchable'    : false, 
           'targets'       : [0,2,3] 
        },
    ]
} );

目标定义列#0、2、3表示不查找这些列。 - Hassan Qasim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接