【问题标题】:Datatables search on td attribute数据表搜索 td 属性
【发布时间】:2019-10-22 03:23:51
【问题描述】:

我在搜索表格上的数据搜索属性时遇到了问题。

这就是我通过 Datatable() 添加属性的方式:

createdRow: function( row, data, dataIndex ) {
  //Check if merchant has psp and add it to the cell
  if(data.parent_id) {
    $( row ).find('td:eq(0)').attr('data-search', 'merchant');
  } else {
    $( row ).find('td:eq(0)').attr('data-search', 'psp');
  }
}

我想使用下拉菜单根据属性值进行搜索,我试过这样做:

 $('#dropdown1').on('change', function() {
       if(this.value === ' ') {
          table
          .columns( 0 )
          .search( '' )
          .draw();
        } else {
          table
          .columns( 0 )
          .search( this.value )
          .draw();
        }

 })

但它似乎不起作用。

请在此处找到带有模拟数据的小提琴https://jsfiddle.net/designtocode/mdfeL7tp/14/

任何帮助或帮助将不胜感激。

【问题讨论】:

  • 嗨,你的意思是你想让用户在下拉列表中选择列名,然后按那个comumn搜索?比如在商家代码栏搜索“ab”?
  • @yayapro 不,我只想通过下拉列表过滤/搜索添加了属性的数据表。不知道有没有道理?
  • 答案中给出的示例不起作用。另一个答案是不使用属性来过滤@yayapro

标签: javascript jquery ajax laravel datatables


【解决方案1】:

您可以使用搜索插件并直接检查该行的parent_id 是否根据下拉列表中选择的值设置。

这将是搜索插件:

$.fn.dataTable.ext.search.push(function (settings, searchData, index, rowData, counter) {
  let shouldDisplay = true;
  let searchValue = $('#dropdown1').val();
  if (searchValue == 'merchant') {
    shouldDisplay = rowData.parent_id ? true : false;
  } else if (searchValue == 'psp') {
    shouldDisplay = rowData.parent_id ? false : true;
  }
  return shouldDisplay;
});

如果它发生变化,您的下拉菜单只需在桌面上调用:

$('#dropdown1').on('change', function() {
  table.draw();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 2017-11-19
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多