问题描述
我在定义自定义过滤器时遇到问题:
重现步骤
在名为“2”的列(我在我的应用中使用 flaticon)中,选择选项“Modéré”或“>=Modéré”
观察结果
过滤器没有找到任何结果 => 表格是空的
预期结果
它应该找到:
- 1 行(使用选项“Moderé”时)或
- 2 行(当使用选项“>=Moderé”时,因为“Sérieux”大于“Modéré”)
- 选项 1:sortLocalCompare:false 当我们按第二列“Société”排序时,公司“Bâloise”在“BVZ Holding”之后排序,这是由于“â”。
- 选项 2:我需要定义 textExtraction 函数,因为我设置了整数值以使逻辑与 ">=Modéré" 一起工作,或者添加多个由半列分隔的整数以处理元素的多个主题(并有一个自定义过滤器列出所有主题一次)
我试图使 the example 尽可能简短和全面。这个表可以用 3 种语言生成(我的应用程序是英语、法语、德语),过滤器应用了 CSS 类名,以便像我一样在应用程序中的多个表中使用。
这是我的通用配置的简短版本(多个表使用它):
$(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
|
分隔符