Jquery Datatables日期范围过滤器 [英] Jquery Datatables Date Range Filter

查看:372
本文介绍了Jquery Datatables日期范围过滤器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

以下代码正常工作,但我需要添加一个新功能,允许用户根据开始日期和结束日期对一系列记录进行过滤,用户应该能够获取所有记录,我可以找到一个数据页面教程来实现这一点,但是我无法添加到代码中,可以帮助我,这里是链接

The code below is working perfectly but I need to add a new functionality to allow the user to filter on a range of records based on their start date and end date, the user should be able to get all the records in between, I was able to find a datatables page tutorial to implement this but I was not able to add that to the code, can you please help me, here is the link

< a href =https://datatables.net/plug-ins/filtering/row-based/range_dates =nofollow noreferrer> https://datatables.net/plug-ins/filtering/row-based/range_dates

<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdn.datatables.net/1.10.13/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/9dcbecd42ad/integration/jqueryui/dataTables.jqueryui.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.13/themes/smoothness/jquery-ui.css">
<link rel="stylesheet" href="https://cdn.datatables.net/plug-ins/9dcbecd42ad/integration/jqueryui/dataTables.jqueryui.css">
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script type="text/javascript" >

$(document).ready(function() {
    $( function() {
     $( "#datepickerStart" ).datepicker();
      $( "#datepickerEnd" ).datepicker();
    } );

    // Setup - add a text input to each footer cell
    $('#example tfoot th').each( function () {
        var title = $(this).text();
        if (title === "Start date") {
            $(this).html( '<input type="text" id="datepickerStart" placeholder="Search '+title+'" />' );
            }
        else if (title === "End date") {
            $(this).html( '<input type="text" id="datepickerEnd" placeholder="Search '+title+'" />' );
            }
            else {
                                $(this).html( '<input type="text" placeholder="Search '+title+'" />' );
            }
    } );

    // DataTable
    var table = $('#example').DataTable({ 


    }
    );







    $('#example tbody').on( 'click', 'tr', function () {
    $(this).toggleClass('selected');
    } );


     $('#example tbody')
        .on( 'mouseenter', 'td', function () {
            var colIdx = table.cell(this).index().column;

            $( table.cells().nodes() ).removeClass( 'highlight' );
            $( table.column( colIdx ).nodes() ).addClass( 'highlight' );
        } );


    $('#button').click( function () {
        alert( table.rows('.selected').data().length +' row(s) selected' );
    } );

    // Apply the search
    table.columns().every( function () {
        var that = this;

        $( 'input', this.footer() ).on( 'keyup change', function () {
            if ( that.search() !== this.value ) {
                that
                    .search( this.value )
                    .draw();
            }
        } );
    } );
} );






</script>

<style>
tfoot input {
        width: 100%;
        padding: 3px;
        box-sizing: border-box;
    }
tr.highlight {
    background-color: blue !important;
}

</style>





<table id="example" class="display" cellspacing="0" width="100%">

        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>End date</th>
                <th>Salary</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th id="min">Start date</th>
                <th id="max">End date</th>
                <th>Salary</th>
            </tr>
        </tfoot>
        <tbody>
            <tr>
                <td>Tiger Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td>61</td>
                <td>2011/04/25</td>
                <td>2011/04/27</td>
                <td>$320,800</td>
            </tr>
            <tr>
                <td>Garrett Winters</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td>63</td>
                <td>2011/07/25</td>
                <td>2011/04/29</td>
                <td>$170,750</td>
            </tr>
            <tr>
                <td>Ashton Cox</td>
                <td>Junior Technical Author</td>
                <td>San Francisco</td>
                <td>66</td>
                <td>2009/01/12</td>
                <td>2011/04/28</td>
                <td>$86,000</td>
            </tr>
            <tr>
                <td>Cedric Kelly</td>
                <td>Senior Javascript Developer</td>
                <td>Edinburgh</td>
                <td>22</td>
                <td>2012/03/29</td>
                <td>2012/03/30</td>
                <td>$433,060</td>
            </tr>
            <tr>
                <td>Airi Satou</td>
                <td>Accountant</td>
                <td>Tokyo</td>
                <td>33</td>
                <td>2008/11/28</td>
                <td>2008/11/30</td>
                <td>$162,700</td>
            </tr>
            <tr>
                <td>Brielle Williamson</td>
                <td>Integration Specialist</td>
                <td>New York</td>
                <td>61</td>
                <td>2012/12/02</td>
                <td>2012/12/21</td>
                <td>$372,000</td>
            </tr>

        </tbody>
    </table>


推荐答案

您应该可以将该代码放在您的建立表格后,您可以使用javascript。

You should be able to put that code anywhere within your javascript after you build the table.

您只需更改这些行:

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

    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;
}
);

这篇关于Jquery Datatables日期范围过滤器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆