jquery - 数据表日期过滤器

标签 jquery jquery-plugins datatables date-range daterangepicker

我有一个日期列,格式为“17/03/2012”。

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

下面是我使用的代码:

        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>

对此的任何帮助建议都会非常有帮助。提前致谢。

最佳答案

我认为 filter API page 中显示的示例就可以了:

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

您上面包含的范围过滤扩展正在寻找的是一组输入框(可能日期选择器样式的文本框效果最好)。根据我在代码中看到的内容,您应该给他们 ID,dateStartdateend 。然后就可以绑定(bind) function() { oTable.fnDraw(); }到这些框中的某个事件(如上面的代码所示,它们绑定(bind)到 keyup 事件),或者它可以是过滤器按钮或其他任何东西。

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

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

$('#dateStart').keyup( function() { oTable.fnDraw(); } );
$('#dateend').keyup( function() { oTable.fnDraw(); } );

关于jquery - 数据表日期过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773989/

相关文章:

jquery - 使用 Jquery 从同一列表项中的另一个元素获取 id 属性

javascript - 停止按下提交按钮,直到文本区域中写入足够的单词

javascript - "setting a property that has only a getter"- Firefox 的 javascript 错误

jquery - DataTables (serverSide) 在第一次请求时正常,在搜索或重新排序时请求中失败并显示 "[Object object"]

jquery - 如何在服务器端处理 dataTable jQuery 时返回 HTML 对象?

javascript - 如何使用bootstrap或js创建动态数据表?

javascript - 如何设置jQuery中图像的宽度?

javascript - 从数组中获取唯一对象的更好方法

javascript - 当一个 Accordion 打开而另一个关闭时,我该怎么做?

javascript - 启用/禁用虚拟键盘