jQuery 具有重音字符和特殊配置的 Tablesorter 自定义过滤器的问题
Problem with jQuery Tablesorter custom-filter having accented characters and special config
我在定义自定义过滤器时遇到问题:
- 有重音字符
- textExtraction 已定义(设置数据排序值属性 i/o 节点文本的用法)
- sortLocalCompare 设置为 true
重现步骤
在名为“2”的列中(我在我的应用程序中使用 flaticon),select 选项“Modéré”或“>= Modéré”
观测结果
过滤器未找到任何结果 => table 为空
预期结果
它应该找到:
- 1 行(使用选项“Modéré”时)或
- 2 行(当使用选项“>= Modéré”时,因为“Sérieux”大于“Modéré”)
请根据描述的情况查找link。
当我更改时:
- sortLocalCompare:false
- comment/remove textExtraction 属性定义
两种情况,其中一种就足够了,使事情正常进行。
当然,作为解决方法,这两个删除选项都不能让我满意。因为:
- 选项 1:sortLocalCompare:false 当我们按第二列“Société”排序时,公司“Bâloise”随后排在“BVZ Holding”之后,这是由于“â”。
- 选项 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
更改 |
分隔符
我在定义自定义过滤器时遇到问题:
- 有重音字符
- textExtraction 已定义(设置数据排序值属性 i/o 节点文本的用法)
- sortLocalCompare 设置为 true
重现步骤
在名为“2”的列中(我在我的应用程序中使用 flaticon),select 选项“Modéré”或“>= Modéré”
观测结果
过滤器未找到任何结果 => table 为空
预期结果
它应该找到:
- 1 行(使用选项“Modéré”时)或
- 2 行(当使用选项“>= Modéré”时,因为“Sérieux”大于“Modéré”)
请根据描述的情况查找link。 当我更改时:
- sortLocalCompare:false
- comment/remove textExtraction 属性定义 两种情况,其中一种就足够了,使事情正常进行。
当然,作为解决方法,这两个删除选项都不能让我满意。因为:
- 选项 1:sortLocalCompare:false 当我们按第二列“Société”排序时,公司“Bâloise”随后排在“BVZ Holding”之后,这是由于“â”。
- 选项 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
|
分隔符