jQuery 具有重音字符和特殊配置的 Tablesorter 自定义过滤器的问题

Problem with jQuery Tablesorter custom-filter having accented characters and special config

我在定义自定义过滤器时遇到问题:

  1. 有重音字符
  2. textExtraction 已定义(设置数据排序值属性 i/o 节点文本的用法)
  3. sortLocalCompare 设置为 true

重现步骤

在名为“2”的列中(我在我的应用程序中使用 flaticon),select 选项“Modéré”或“>= Modéré”

观测结果

过滤器未找到任何结果 => table 为空

预期结果

它应该找到:

请根据描述的情况查找link。 当我更改时:

  1. sortLocalCompare:false
  2. comment/remove textExtraction 属性定义 两种情况,其中一种就足够了,使事情正常进行。

当然,作为解决方法,这两个删除选项都不能让我满意。因为:

  1. 选项 1:sortLocalCompare:false 当我们按第二列“Société”排序时,公司“Bâloise”随后排在“BVZ Holding”之后,这是由于“â”。
  2. 选项 2:我需要定义 textExtraction 函数,因为我设置整数值以使逻辑与“>= Modéré”一起工作,或者添加多个由分号分隔的整数来处理 多个 主题到一个元素(并有一个自定义过滤器列出所有主题一次)

我试图让 the example 尽可能简短和全面。这个 table 可以用 3 种语言生成(我的应用程序是英语、法语、德语)并且过滤器应用 CSS class 名称用于多个 table像我一样跨应用程序。

这是我的通用配置的简短版本(多个 table 使用它):

$(function() {
  $(".tablesorter").tablesorter({
    theme: 'blue',
    sortLocaleCompare: true,
    widgets: ["filter"],
    textExtraction: textExtractionDataSortValue,
    filter_onlyAvail: 'filter-onlyAvail',
    widgetOptions: {
      filter_functions: {
        '.filter-controversy': filterControversy,
      }
    }
  });
});

自定义过滤器功能(根据用户的语言生成英语、法语或德语):

var filterControversy = {
  'Aucun': function(e, n) {  
  console.info(e + " n=" + n);
    return e == '';
  },
  'Modéré': function(e, n) {
  console.info(e + " n=" + n);
    return e == 101;
  },
  ' >=Modéré': function(e, n) {
  console.info(e + " n=" + n);
    return e >= 101;
  },
  'Serieux': function(e, n) {
  console.info(e + " n=" + n);
    return e == 102;
  },
  ' >=Sérieux': function(e, n) {
    return e >= 102;
  },
  'Sévère': function(e, n) {
    return e == 106;
  },
  'Majeur': function(e, n) {
  console.info(e + " n=" + n);
    return e == 103;
  },
  'Tous': function(e, n) {
    return e != '';
  }
}

感谢您的帮助

Tablesorter 版本:2.31.3(最新)

所以您对导致问题的 sortLocaleCompare 的行为是正确的。正在发生的事情是过滤器函数名称正在删除重音。为了解决这个问题,您需要更改函数名称以包括非重音名称(用于函数)和带重音的名称(向用户显示)demo

您应该只需要按如下方式更改 filterControversy 对象:

var filterControversy = {
  'Aucun': function(e, n) {
    return e == '';
  },
  'Modere|Modéré': function(e, n) {
    return e == 101;
  },
  ' >=Modere| >=Modéré': function(e, n) {
    return e >= 101;
  },
  'Serieux': function(e, n) {
    return e == 102;
  },
  ' >=Serieux| >=Sérieux': function(e, n) {
    return e >= 102;
  },
  'Severe|Sévère': function(e, n) {
    return e == 106;
  },
  'Majeur': function(e, n) {
    return e == 103;
  },
  'Tous': function(e, n) {
    return e != '';
  }
};

可以使用 filter_selectSource widget option

更改 | 分隔符