【问题标题】:jQuery data table filtering not working when comma is used使用逗号时jQuery数据表过滤不起作用
【发布时间】:2018-05-27 19:08:05
【问题描述】:

我有一个数据表,我正在尝试使用包含逗号的过滤器字符串过滤行。

这是数据表中的其中一行:

User logged in from 1.1.1.1, agent Mozilla/2.0

当我尝试使用1.1.1.1 进行过滤时,上面的行出现在搜索结果中。但是,当我尝试使用 1.1.1.1, 进行过滤时,它会失败并且上面的行没有出现。

我尝试了enabling/disabling正则表达式智能过滤等都无济于事。

更新:

这是我用于过滤的代码:

this.$('.table-filter-field').on('input.my_datatable', function filterListener() {
                $($(this).data('table')).dataTable().fnFilter(this.value);
    });

【问题讨论】:

  • 是逗号破坏js吗?有什么错误吗?
  • @zod 不,没有错误
  • 前面有逗号吗:-)
  • 你能在这里发布一个工作示例吗?
  • 看这个小提琴:jsfiddle.net/98Lecvx2/1 正如你所描述的,工作得很好。如果可能,请发布您的代码。

标签: jquery datatable datatables filtering


【解决方案1】:

如果他们的 comma (,) 没有将您的字符串搜索分成一行,那么您使用的搜索正则表达式可能响应不佳,您可以检查以下适用于我的许多项目的代码用于行数据搜索。

$('#search_field').keyup(function () { // Search field keyup event.you can use other event instead.

    var rex = new RegExp($(this).val(), 'i');
    $('.yourtable tbody tr').hide();
    $('.yourtable tbody tr').filter(function () {
         return rex.test($(this).text());
    }).show();

})

【讨论】:

    【解决方案2】:

    粗体标签是阻止搜索工作的原因。

    看到这个问题:Strip HTML tags from filter with custom sType

    我在这个小提琴中使用上面的方法:https://jsfiddle.net/98Lecvx2/13/

    这是关键代码:

      "aoColumnDefs": [
        {   "aTargets": [0],
            "mRender": function ( data, type, full ) {
                if (type === 'filter') {
                    return data.replace(/(<([^>]+)>)/ig,"");
                }
                return data;
            }
        }
    ]
    

    请注意,编写的代码仅适用于第一列。我添加了另一行,第一列和第二列被翻转(所以第二列中有 1.1.1.1),它没有与过滤器一起显示。如果您的所有列中都有 HTML 并且需要忽略所有 HTML,则需要 aTargets 字符串来包含所有这些 - 小提琴中的 [0,1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多