首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可数据数据过滤器

可数据数据过滤器
EN

Stack Overflow用户
提问于 2012-03-19 16:30:27
回答 2查看 26.4K关注 0票数 5

我有一个日期列,格式化为'17/03/2012‘。

我希望能够选择一个开始和结束日期,如果上面的1日期列在此日期范围内,它将过滤该列。

下面是使用以下代码im:

代码语言:javascript
复制
        Start Date: <input type="text" id="dateStart" name="dateStart" size="30">
        End Date: <input type="text" id="dateend" name="dateend" size="30">

    <script type="text/javascript" charset="utf-8">

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

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

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


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

$(function() {
    // Implements the dataTables plugin on the HTML table
    var $oTable= $("#example").dataTable( {
    "sDom": '<"top"><"clear">t<"bottom"i><"clear">',
        "iDisplayLength": 20,       
        "oLanguage": {
            "sLengthMenu": 'Show <select><option value="25">25</option><option value="50">50</option><option value="100">100</option><option value="200">200</option></select>'
        },
        "bJQueryUI": true,
        //"sPaginationType": "full_numbers",
        "aoColumns": [
                null,
                null,
                  { "sType": "date" }
        ]                    
        });    


    $('#dateStart, #dateend').daterangepicker(
        {
        dateFormat: 'dd/mm/yy',
        arrows: true
    }

    );        


    /* Add event listeners to the two range filtering inputs */
    $('#dateStart').keyup( function() { oTable.fnDraw(); } );
    $('#dateend').keyup( function() { oTable.fnDraw(); } );

    /* Add event listeners to the two range filtering inputs */
    $('#dateStart').change( function() { oTable.fnDraw(); } );
    $('#dateend').change( function() { oTable.fnDraw(); } );

    /* Add event listeners to the two range filtering inputs */
    $('#name').keyup( function() { oTable.fnDraw(); } );
    $('#name').change( function() { oTable.fnDraw(); } );
});

    </script>

任何关于这方面的帮助建议都会非常有用。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-19 16:59:54

我认为,在过滤器API页面中显示的示例将起作用:

代码语言:javascript
复制
$(document).ready(function() {
    var oTable = $('#example').dataTable();

    /* Add event listeners to the two range filtering inputs */
    $('#min').keyup( function() { oTable.fnDraw(); } );
    $('#max').keyup( function() { oTable.fnDraw(); } );
} );

上面包含的范围过滤扩展是一组输入框(可能是datepicker样式的文本框最好)。根据我在代码中看到的,您应该给他们ID,dateStartdateend。然后,您可以将function() { oTable.fnDraw(); }绑定到这些框(如上面的代码中,它们绑定到keyup事件)上的某个事件,或者它可以是一个筛选按钮或其他什么。

但是现在,每次(使用fnDraw())绘制表时,它都会考虑到这些日期,并根据该范围过滤基于零的iStartDateColiEndDateCol列。

更新:是一个更直接的答案--只需在document.ready函数中包含以下内容:

代码语言:javascript
复制
$('#dateStart').keyup( function() { oTable.fnDraw(); } );
$('#dateend').keyup( function() { oTable.fnDraw(); } );
票数 6
EN

Stack Overflow用户

发布于 2013-12-19 08:42:59

如果要根据日期范围筛选DataTable,可以尝试以下函数:

过滤器

定制此函数使其适用于不同的日期格式是非常简单的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9773989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档