Фильтровать таблицу Bootstrap с датой начала и окончания с помощью Jquery

У меня есть таблица динамической загрузки Bind с использованием значений JSON. Эта таблица содержит столбцы «Дата начала» и «Дата окончания». Поэтому мне нужно отфильтровать таблицу Bootstrap между вчера и сегодня. У меня есть отдельный раскрывающийся список, называемый фильтром даты, если я изменил дату как «месяц». Он будет фильтровать данные за текущий месяц в таблице начальной загрузки. Поэтому, пожалуйста, найдите ниже код,

HTML:

<table id="eventsTable" data-checkbox="true" data-sortable="true" data-row-style="rowStyle"></table>



<div class="pull-left tableAction hide" onchange="filtersByDate()">
                <select class="form-control" id="date">
                    <option value="<any date>">Any date</option>
                    <option value="Today">Today</option>
                    <option value="Current Week">CurrentWeek</option>
               </select>
 </div>

JS:

$.ajax({
            type: "POST",
            url: "apilist",
            data: "",
            success: function (response) {
                        if (response != null) {
                            var data = [];
                            $.each(response.Slip, function (index) {
                                var obj = {};
                                obj.SlipID = response.Slip[index].SlipID;
                                obj.Client = response.Slip[index].Client;
                                obj.Start = response.Slip[index].StartDate;
                                obj.End = (response.Slip[index].EndDate;
                                data.push(obj);
                            });
                            $('#eventsTable').bootstrapTable({
                                columns: [
                                    { field: "state", checkbox: true },
                                    { field: "SlipID", title: 'SlipID', sortable: true, class : "hide" },
                                    { field: "Client", title: 'Client', sortable: true },
                                    { field: "Start", title: "Start", sortable: true },
                                    { field: "End", title: "End", sortable: true },
                                ],
                                data: data,
                            });
                        }
              }
});

function filtersByDate()
{
    startDate= $("#startDate").val();
    endDate = $("#startDate").val();
    searchFunction(startDate,endDate);
}
function searchFunction(startDate, endDate) {
var table, tr, td, td2, i;
    table = document.getElementById("eventsTable");
    tr = table.getElementsByTagName("tr");
    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[13];
        td2 = tr[i].getElementsByTagName("td")[14];
        if (td) {
            if (td.innerHTML != "-") {
                var dateFormat = new Date(parseInt(td.innerHTML.split('-')[0]), parseInt(td.innerHTML.split('-')[1]), parseInt(td.innerHTML.split('-')[2]));
                var startdateFormat = new Date(parseInt(startDate.split('-')[0]), parseInt(startDate.split('-')[1]), parseInt(startDate.split('-')[2]));
                if (dateFormat >= startdateFormat) {
                    tr[i].style.display = "";
                } else {
                    tr[i].style.display = "none";
                }
            }
       }
        if (td2) {
            if (td2.innerHTML != "-") {
                var dateFormat = new Date(parseInt(td2.innerHTML.split('-')[0]), parseInt(td2.innerHTML.split('-')[1]), parseInt(td2.innerHTML.split('-')[2]));
                var enddateFormat = new Date(parseInt(endDate.split('-')[0]), parseInt(endDate.split('-')[1]), parseInt(endDate.split('-')[2]));
                if (dateFormat <= enddateFormat) {
                    tr[i].style.display = "";
                } else {
                    tr[i].style.display = "none";
                }
            }
        }
    }
}

Пожалуйста, дайте мне знать ваши предложения,


person Arun D    schedule 06.03.2018    source источник
comment
Поскольку вы уже используете цикл для создания объекта, я думаю, было бы хорошо, если бы вы использовали if else для фильтрации данных, которые вы не хотите показывать, если только вы не хотите этого делать.   -  person Aamir Masood    schedule 06.03.2018
comment
У меня есть отдельный раскрывающийся список, называемый фильтром даты, если я изменил дату как месяц. Он будет фильтровать данные за текущий месяц.   -  person Arun D    schedule 06.03.2018
comment
Он будет фильтровать данные за текущий месяц в таблице начальной загрузки .... хорошо, похоже, у вас это уже работает? Непонятно, в чем проблема и в чем ваш вопрос. Является ли проблема отфильтровать его таким же образом при возврате из вызова ajax?   -  person ADyson    schedule 06.03.2018
comment
Будут ли данные фильтроваться со стороны сервера или со стороны клиента?   -  person Aamir Masood    schedule 06.03.2018
comment
На самом деле у меня есть таблица Bootstrap, которая уже привязана к jquery. Итак, мы пришли с фильтром. Если я изменил раскрывающееся значение, например текущий месяц, в таблице начальной загрузки отображаются только данные за текущий месяц.   -  person Arun D    schedule 06.03.2018
comment
да ты это уже говорил. Так в чем же проблема? Чем вы хотите, чтобы мы вам помогли?   -  person ADyson    schedule 06.03.2018
comment
Мне нужен скрипт для фильтрации даты. Я написал код javascript следующим образом:   -  person Arun D    schedule 06.03.2018
comment
?? Вы только что сказали нам (дважды), что у вас уже есть что-то, что выполняет фильтрацию. Вы сказали, что если я изменю раскрывающееся значение, например текущий месяц, в таблице начальной загрузки будут отображаться только данные за текущий месяц. Это звучит как описание существующей функции. Вы пытаетесь сказать, что хотите именно это, а не то, что у вас уже есть? Возможно, у нас просто языковой барьер. Если вы пишете что-то в настоящем времени, мы предполагаем, что это уже существует. Возможно, вы хотели написать в будущем времени.   -  person ADyson    schedule 06.03.2018
comment
Нет, фильтрацию я еще не делал. Мое требование - сделать фильтр между датой начала и окончания   -  person Arun D    schedule 06.03.2018
comment
Да я вижу. Я думаю, вам нужно немного улучшить свой английский, чтобы вы не писали вопросы или просьбы, как если бы они были констатацией факта. В любом случае это отдельная вещь. Итак, следующий вопрос: что вы пытались сделать до сих пор? Это не бесплатная служба записи моего кода. Мы добровольцы и потратим свое время, чтобы помочь вам с вашей попыткой решить вашу проблему, если мы увидим, что вы потратили некоторое время на исследование и сначала попробовали это сами. Однако, если честно, уже существует множество плагинов для таблиц Javascript, которые будут выполнять для вас фильтрацию/сортировку и т. д. — вы искали его?   -  person ADyson    schedule 06.03.2018
comment
Пожалуйста, проверьте обновленный скрипт. Я попытался отфильтровать гайку таблицы начальной загрузки, но она работает неправильно. @ADyson   -  person Arun D    schedule 07.03.2018
comment
Поскольку это небольшая стена кода, вам нужно быть немного более конкретным в отношении того, что идет не так. Приведите пример входных данных, ожидаемого результата и текущего выхода. Но на самом деле, как я уже сказал, вам следует серьезно подумать об использовании плагина для этого, это почти наверняка сэкономит вам много времени и усилий. Их доступно множество, некоторые из них явно совместимы с бутстрапом.   -  person ADyson    schedule 07.03.2018
comment
Собственно, откуда вы взяли это расширение bootstrapTable? Это bootstrap-table.wenzhixin.net.cn/documentation? Если вы читаете эту страницу, похоже, уже есть некоторые методы фильтрации.   -  person ADyson    schedule 07.03.2018
comment
@ArunD Мне кажется, что ваш код не работает с загрузочной таблицей. Bootstrap-table предоставляет метод filterBy, который позволяет фильтровать строки таблицы.   -  person Daniel    schedule 08.03.2018


Ответы (1)


Наконец я нашел решение,

tr[i].getElementsByTagName("td")[13] — дата начала в таблице начальной загрузки.

tr[i].getElementsByTagName("td")[14] — конечная дата в таблице начальной загрузки.

JS

 function searchFunction(startDate, endDate) {
        var table, tr, td, td2, i;
        table = document.getElementById("eventsTable");
        var startValue = false;
        var endValue = false;
        tr = table.getElementsByTagName("tr");
        for (i = 0; i < tr.length; i++) {
            td = tr[i].getElementsByTagName("td")[13];
            td2 = tr[i].getElementsByTagName("td")[14];
            if (td) {
                if (td.innerHTML != "-") {
                    if ((new Date(td.innerHTML)).getTime() >= (new Date(startDate)).getTime()) {
                        startValue = true;
                    } else {
                        startValue = false;
                    }
                }
           }
            if (td2) {
                if (td2.innerHTML != "-") {
                    if ((new Date(td2.innerHTML)).getTime() <= (new Date(endDate)).getTime()) {
                        endValue = true;
                    } else {
                        endValue = false;
                    }
                }
            }
            if (i != 0) {
                if (startValue == true && endValue == true) {
                    tr[i].style.display = "";
                }
                else {
                    tr[i].style.display = "none";
                }
            }
        }

Спасибо

person Arun D    schedule 07.03.2018