Табулятор - эксклюзивные фильтры заголовков - как? - PullRequest
0 голосов
/ 09 мая 2020

Я написал и поддерживаю небольшое веб-приложение для нашего местного приюта для животных, чтобы помочь волонтерам находить собак. Я выбрал Tabulator, потому что он имел отличные функции и был прост в использовании, и был очень доволен своим выбором. Для первой версии приложения я использовал внешние поля ввода для поиска и вручную выполнил всю проводку для поддержки поиска в реальном времени.

Сейчас я работаю над v2 и пытаюсь использовать фильтры заголовков. Моя проблема в том, что фильтры должны быть эксклюзивными, то есть использование filter1 очищает / отключает фильтры 2 и 3, использование filter2 очищает / отключает 1 и 3 и так далее. С полями внешнего поиска я использовал для этого события focus (). Когда я пытаюсь использовать делегаты jQuery on (focus), чтобы сделать то же самое с фильтрами заголовков и, например, table.setHeaderFilterValue ("field1", ""), это не работает; событие срабатывает, но поле ввода никогда не получает фокус, поэтому я не могу его ввести. Я пробовал разные события, такие как щелчок; но ничего из того, что я пробовал, не работает должным образом.

Я изучал документы и боролся с этим несколько часов. Я подумал о подключении dataFiltering () и удалении ненужных мне фильтров, но я не уверен, как определить фильтр, который я хочу сохранить, и все еще остается вопрос текста в полях, которые нужно обработать с участием. Уверен, мне не помогает то, что фронтенд-работа не входит в мою компетенцию, хотя до сих пор я справлялся достаточно хорошо. Есть простой или нормальный способ сделать это, которого я просто не вижу?

1 Ответ

0 голосов
/ 09 мая 2020

Для записи я нашел способ выполнить эксклюзивную фильтрацию с фильтрами заголовков с одним обратным вызовом события:

        \$(document).on("focus", ".tabulator-col input[type=search]", function() {
            var hfNames = ["name", "anum", "kennel"];
            var fieldName = \$(this).closest(".tabulator-col")[0].getAttribute("tabulator-field");
            hfNames.map(function(hfN) { if (hfN != fieldName) table.setHeaderFilterValue(hfN, "") });
        });

Три hfNames - это имена полей столбцов с включенной фильтрацией. Да, я мог бы получить их динамически, но для такого небольшого приложения это не стоило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...