Упорядочивать DataTables ранг датирует

У меня есть два inputs (минимальная дата и максимальная дата), с которыми я хочу выдать результаты моих подмостков, проблема состоит в том, что у DataTables есть серьезная проблема с распорядком дат. Я прочитал из-за Интернета, что для тех, у которых хочет быть формат, dd / мм / YYYY есть немного рулона, и рекомендует делать "truquillo", который быстрее, чем другой выбор, но только функционирует в области поисков, которые приносит по умолчанию DataTables, но с двумя inputs оно не функционирует.

Этот "truquillo" состоит в помещении одного с display none с датой в формат YYYYMMDD таким образом пользователь не видит контент но DataTables, если он может реализовывать распорядок.

<td><span style='display: none;'>20150221</span>21/02/2015</td>

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

Вещь состоит в том, что я не знаю, если первый "truquillo" касается второго случая или наоборот, кто-то, у кого была бы та же проблема, или сходный он умел бы освещать меня немного? Здесь я оставляю мой код.

    $.fn.dataTableExt.afnFiltering.push(
      function( oSettings, aData, iDataIndex ) {
        var iFini = document.getElementById('min').value;
        var iFfin = document.getElementById('max').value;
        var iStartDateCol = 4;
        var iEndDateCol = 4;

        iFini = iFini.substring(6,10) + iFini.substring(3,5) + iFini.substring(0,2);
        iFfin = iFfin.substring(6,10) + iFfin.substring(3,5) + iFfin.substring(0,2);

        var datofini=aData[iStartDateCol].substring(6,10) + aData[iStartDateCol].substring(3,5)+ aData[iStartDateCol].substring(0,2);
        var datoffin=aData[iEndDateCol].substring(6,10) + aData[iEndDateCol].substring(3,5)+ aData[iEndDateCol].substring(0,2);

        if (iFini === "" && iFfin === "") {
          return true;
        } else if (iFini <= datofini && iFfin === "") {
          return true;
        } else if (iFfin >= datoffin && iFini === "") {
          return true;
        } else if (iFini <= datofini && iFfin >= datoffin) {
          return true;
        }
        return false;
      }
    );

    var table_filter = $('#DataTables_Table_4').dataTable();

    $('#min').keyup( function() { table_filter.fnDraw(); } );
    $('#max').keyup( function() { table_filter.fnDraw(); } );
2
задан 31.05.2017, 20:53
1 ответ

В конце концов despuГ©s пробования всего, я продемонстрировал она librerГ - moment.js и изменил ее funciГіn выданный для того, чтобы допустил формат dd-mm-YYYY

http://momentjs.com/

, оставляю aquГ - cГіdigo:

    $.fn.dataTableExt.afnFiltering.push(
            function( oSettings, aData, iDataIndex ) {
                var filterstart = $('#min').val();
                var filterend = $('#max').val();
                var iStartDateCol = 4;
                var iEndDateCol = 4;

                var tabledatestart = aData[iStartDateCol];
                var tabledateend = aData[iEndDateCol];

                var minDay = filterstart.substring(0,2);
                var minMonth = filterstart.substring(3,5);
                var minYear = filterstart.substring(6,10);

                var maxDay = filterend.substring(0,2);
                var maxMonth = filterend.substring(3,5);
                var maxYear = filterend.substring(6,10);

                filterstart = minYear + minMonth + minDay;
                filterend = maxYear + maxMonth + maxDay;

                if ( filterstart === "" && filterend === "" )
                {
                    return true;
                }
                else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && filterend === "")
                {
                    return true;
                }
                else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isAfter(tabledatestart)) && filterstart === "")
                {
                    return true;
                }
                else if ((moment(filterstart).isSame(tabledatestart) || moment(filterstart).isBefore(tabledatestart)) && (moment(filterend).isSame(tabledateend) || moment(filterend).isAfter(tabledateend)))
                {
                    return true;
                }
                return false;
            }
    );

не надо снимать "truquillo" для того, чтобы оно функционировало.

2
ответ дан 24.11.2019, 13:24