我在两个数据表的一页中都有2个数据表,我使用

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


如何解决这个问题,为什么首先调用的第一个函数也只会在以后调用,否则我做错任何事情。还是因为return语句。

最佳答案

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

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


会的。

07-24 09:50
查看更多