Использование фильтра jquery tablesorter для фильтрации по началу текста столбца - PullRequest
1 голос
/ 01 февраля 2012

Я бы хотел иметь возможность фильтровать столбец фамилий, используя фильтр сортировщика таблиц.Фильтр должен совпадать только с первого символа каждого имени.Например, допустим, у вас были следующие три имени:

Гилберт

Бэггинс

Годфри

Если текст фильтра был просто "g", яВам нужен только этот результат:

Гилберт

Годфри

И не соответствует ни один из GS в Бэггинсе.


После изученияИсходный код .tablesorterFilter еще немного, я смог понять, как это сделать.

Вам необходимо создать функцию, которой передаются 3 параметра.Первый параметр - это содержимое элемента HTML.Второй параметр - это строковый массив слов, которые пользователь ввел в контейнер фильтра.Третий параметр - это логическое значение для чувствительности к регистру.Вы передаете ссылку на эту функцию в .tablesorterFilter filterFunction.Я просто скопировал и вставил функцию has_words по умолчанию в .tablesorterFilter и изменил ее, чтобы обеспечить требуемую функциональность.Я назвал его filterbyfirstcolumn и передал ссылку на него как filterFunction.

Вот соответствующий фрагмент кода из моей программы:

        function filterbyfirstcolumn(str, words, caseSensitive) {
        var text = caseSensitive ? str : str.toLowerCase();

        var allwords = "";

        for (var i=0; i < words.length; i++) {
            allwords += words[i];

            if (i != words.length - 1)
                allwords += " ";
        }

        if (text.indexOf(allwords) != 0)
            return false;
        return true;
    }

    $("#tblSearchContacts")
.tablesorter({debug: false, widgets: ["zebra"], 
                headers: { 
                        0: { sorter: false }, 
                        4: { sorter: false }, 
                        5: { sorter: false },
                        6: { sorter: false }, 
                        7: { sorter: false }, 
                        8: { sorter: false } 
                       },
                       sortList: [[1,0]]})
.tablesorterPager({ container: $("#pagerOne"), positionFixed: false, size : 20 })
.tablesorterFilter({filterContainer: $("#txtFilter"),
                    filterClearContainer: $("#btnClear"),
                    filterColumns: [3],
                    filterCaseSensitive: false,
                    filterFunction: filterbyfirstcolumn});`

Надеемся, что другие могут найти это полезным.Используя подобную технику, вы могли бы делать все аккуратные вещи с фильтром.

1 Ответ

0 голосов
/ 09 марта 2012

У меня есть вилка плагина tablesorter на github.Недавно я обновил свой виджет фильтра , добавив параметр с именем filter_startsWith, который переключается между поиском буквы / цифры в любом месте ячейки и только началом.Виджет фильтра не очень хорошо работает с плагином пейджера, поэтому, если вам нужны оба, это решение может не сработать для вас.

...