Живые фильтры обновления таблицы в DataTables - PullRequest
0 голосов
/ 10 октября 2019

Добро пожаловать, у меня возникают проблемы с добавлением обновлений фильтра в DataTables.

В этом примере это прекрасно работает: http://live.datatables.net/gejojiqu/1/edit

Когда ядобавьте эту строку, это не работает для меня:

// The rebuild will clear the exisiting select, so it needs to be repopulated
var currSearch = column.search();
if ( currSearch ) {
   select.val( currSearch.substring(1, currSearch.length-1) );
}

Мой код выглядит так:

$(document).ready(function () {
    $('#projects-table').DataTable({
        "order": [[ 0, "desc" ]],
        "sDom": '<"top">rt<"bottom"p><"clear">',
        stateSave: true,
        initComplete: function () {

            this.api().columns([0, 1, 2]).every(function () {
                var column = this;
                var filtry = $('#projects-filters');
                var th = $("#projects-headers").find("th").eq(column.index());

                var select = $('<select id="' + th.text().replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '') + '" class="custom-select"><option value="">' + th.text() + '</option></select>')
                    .appendTo($(filtry))
                    .on('change', function () {
                        var val = $.fn.dataTable.util.escapeRegex(
                            $(this).val());

                        column.search(val ? '^' + val + '$' : '', true, false)
                            .draw();
                    });

                column.data().unique().sort().each(function(d, j) {
                    var val = $.fn.dataTable.util.escapeRegex(d);
                    if (column.search() === "^" + val + "$") {
                      select.append(
                        '<option value="' + d + '" selected="selected">' + d + "</option>"
                      );
                    } else {
                      select.append('<option value="' + d + '">' + d + "</option>");
                    }
                });

            });
        }
    });
});

У кого-нибудь есть какие-нибудь идеи?

...