Я использую jQuery Tablesorter и имеет проблему с порядком, в котором парсеры применяются к столбцам таблицы. Я добавляю настраиваемый парсер для обработки валюты формы $-3.33.
$.tablesorter.addParser({
id: "fancyCurrency",
is: function(s) {
return /^\$[\-]?[0-9,\.]*$/.test(s);
},
format: function(s) {
s = s.replace(/[$,]/g,'');
return $.tablesorter.formatFloat( s );
},
type: "numeric"
});
Проблема заключается в том, что встроенный анализатор валют имеет приоритет над моим настраиваемым парсером. Я мог бы поместить синтаксический анализатор в код tablesorter (перед парсером валюты), и он работает правильно, но это не очень удобно. Я не могу указать сортировщика вручную, используя что-то вроде:
headers: {
3: { sorter: "fancyNumber" },
11: { sorter: "fancyCurrency" }
}
поскольку столбцы таблицы генерируются динамически с пользовательских входов. Я предполагаю, что одним из вариантов было бы задать сортировщик для использования в качестве класса css и использовать некоторый JQuery для явного указания сортировщика, такого как этот вопрос, но я бы предпочел придерживаться динамического обнаружения, если это возможно.