Основываясь на официальном примере фильтрации tablesorter с select2, я пытаюсь реализовать первоначальный выбор параметров фильтра, и я застрял с tablesorter, не обновляя фильтрованные строки.
JSFiddle: http://jsfiddle.net/5dUk9/1/.
Взгляните на первый столбец, значения xyz следует отфильтровать, но это не так. Однако, если вы выполняете ручной выбор, он работает так, как ожидалось.
// ***
var filter = $.tablesorter.filterFormatter.select2( $cell, indx, {
match : true, // adds "filter-match" to header
cellText : 'Match: ',
width: '85%',
initSelection : function (element, callback) {
var data = [];
$(element.val().split(",")).each(function () {
data.push({id: this, text: this});
});
callback(data);
}
});
filter.siblings("input.select2").select2("val", ["abc", "def"]);
return filter;
// ***
В этом фрагменте кода две вещи неясны: initSelection
ли initSelection
в этом сценарии и как уведомить tablesorter об изменениях, если это необходимо.
Конечно, любое другое предложение было бы очень полезно.
Исходный пример (без изменений): http://jsfiddle.net/5dUk9/
Благодаря @Mottie для быстрой реализации этой функции и предоставления демонстрационного примера.
Существует также обходное решение, которое я нашел:
filter.siblings("input.select2").select2("val", ["abc", "def"], true);
Хотя это не всегда работает, то обертывание в setTimeout()
должно быть быстрым и грязным, исправить это: http://jsfiddle.net/5dUk9/3/.