Я хочу правильно отсортировать ценовой диапазон. Как я могу это сделать?
$.tablesorter.addParser({
// set a unique id
id: 'pricerange',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s,table,cell) {
// format your data for normalization
var cellTxt = s.replace("USD", "").replace(",","");
console.log(cellTxt);
return cellTxt;
},
// set type, either numeric or text
type: 'nemeric'
});
Ваш вопрос заставил меня задуматься о том, как определить, будет ли число, введенное в качестве поискового запроса, находиться в указанном диапазоне в таблице. Итак, теперь у меня есть демо это показывает, как добавить новый тип поиска фильтра.
Этот код работает только с моим вилка столового
$(function() {
// Add insideRange filter type
// ============================
// This allows you to enter a number (e.g. 8) and show the
// resulting rows that will have that query within it's range
var ts = $.tablesorter,
isDigit = /\d+/,
nondigit = /[^\d,.\-()]/g,
range = /\s+-\s+/;
ts.filter.types.insideRange = function( c, data ) {
if ( isDigit.test( data.iFilter ) && range.test( data.iExact ) ) {
var t, val, low, high,
parts = data.iExact.replace( nondigit, '' ).split( '-' );
// the cell does not contain a range
if ( isNaN( parts[0] ) || isNaN( parts[1] ) ) {
return null;
}
low = ts.formatFloat( parts[0], c.table );
high = ts.formatFloat( parts[1], c.table );
val = ts.formatFloat( data.iFilter.replace( nondigit, '' ), c.table );
if ( high < low ) {
// swap high & low
t = high; high = low; low = t;
}
return low <= val && val <= high;
}
return null;
};
// call the tablesorter plugin
$("#table").tablesorter({
theme: 'blue',
widthFixed : true,
widgets: ["zebra", "filter"],
widgetOptions : {
// set to false because it is difficult to determine if a filtered
// row is already showing when looking at ranges
filter_searchFiltered : false
}
});
});
А также вот jsfiddle если вы хотите возиться с кодом.
Других решений пока нет …