DataTable过滤器,日期范围为

时间:2017-03-17 13:44:01

标签: javascript jquery datatables-1.10

我在DataTable的一个页面中有2个DataTable我已经使用

添加了日期范围
function filterDateRangeService(){
        $.fn.dataTable.ext.search.push(

                function( settings, data, dataIndex ) {                 
                    var dateStart = moment($("#fromDateSer").val(),"DD/MM/YYYY");
                    var dateEnd = moment($("#toDateSer").val(),"DD/MM/YYYY");

                    var evalDate= moment(data[5],"DD/MM/YYYY");
            console.log("dateStart +"+dateStart+" dateEnd "+dateEnd)

                // console.log("insidde")
                    if (evalDate >= dateStart && evalDate <= dateEnd) {
                        return true;
                    }
                    else {
                        return false;
                    }
                     }


            );

function filterDateRangePatient(){
            $.fn.dataTable.ext.search.push(

                    function( settings, data, dataIndex ) {                 
                        var dateStart = moment($("#fromDate").val(),"DD/MM/YYYY");
                        var dateEnd = moment($("#toDate").val(),"DD/MM/YYYY");

                        var evalDate= moment(data[6],"DD/MM/YYYY");
                console.log("dateStart +"+dateStart+" dateEnd "+dateEnd)

                    // console.log("insidde")
                        if (evalDate >= dateStart && evalDate <= dateEnd) {
                            return true;
                        }
                        else {
                            return false;
                        }
                         }


                ); 

单击相应的复选框时,将调用该函数。问题是,当我使用第一个函数的日期范围时,它会过滤特定日期范围的表,但是当我尝试使用第二个函数过滤另一个表时,只调用第一个函数,即只调用函数的第一个函数每一次。 调用功能使用:

$('input[name="radioFilter"]').click(function(){        
                filterFunction();
            });
            $('input[name="radioFilterSer"]').click(function(){
                filterFunctionSer();
            });  
function filterFunction(){
//some functions..
filterDateRangePatient()
}
function filterFunctionSer(){
//some functions..
filterDateRangeService()
} 

如何解决这个问题,为什么第一个被调用的函数也只是稍后被调用,或者我正在做的任何事情都是错误的。或者是因为返回Statement。

1 个答案:

答案 0 :(得分:1)

如何使用params编写单个函数并在两个函数上使用它

function filterFunction(){
    //some functions..
    filterDateRange($("#fromDateSer").val(), $("#toDateSer").val(), 5)
}
function filterFunctionSer(){
    //some functions..
    filterDateRange($("#fromDate").val(), $("#toDate").val(), 6)
}

filterDateRange功能:(更新:添加了搜索pop功能)

function filterDateRange(from, to, num){

    $.fn.dataTable.ext.search.pop();

    $.fn.dataTable.ext.search.push(function( settings, data, dataIndex ) {                 
        var dateStart = moment(from,"DD/MM/YYYY");
        var dateEnd = moment(to,"DD/MM/YYYY");

        var evalDate= moment(data[num],"DD/MM/YYYY");
        console.log("dateStart +"+dateStart+" dateEnd "+dateEnd);

        if (evalDate >= dateStart && evalDate <= dateEnd) {
            return true;
        }
        else {
            return false;
        }
    });
}  

它会起作用。