具有自定义搜索标准的数据表fnFilter

时间:2016-02-29 05:52:26

标签: jquery datatable

我正在使用jQuery Datatable v1.9.4,我想在数据表上执行自定义或者说范围搜索,这里是我的数据表的截图。

This is screen cap of my datatable.

这里,在第二个下拉列表中,有一段天,我想基于那个,2 nd 下拉列表过滤列period。例如,如果period包含文字01/02/2016 - 29/03/2016并且我今天在29/01/2016使用过滤器,并从下拉列表中选择第二个选项7 days ago,那么该行将被过滤掉。

我正在使用此代码,

jQuery('#period').change(function () {
    selectedValue = jQuery(this).find('option:selected').val();
    jQuery('#dyntable').dataTable().fnFilter(selectedValue, 4, true);
});

当然,它不起作用。
任何人都可以帮助我。

感谢。

1 个答案:

答案 0 :(得分:0)

确定,

我得到了解决方案。

jQuery('#period').change(function () {
    jQuery('#dyntable').dataTable().fnDraw();
});


$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) {
    data = aData[4];
    var selectedVal = $('#period').val();
    if (selectedVal != "") {
        selectedSplit = selectedVal.split(" - ");
        dataSplit = data.split(" - ");

        var f = selectedSplit[0].split("/");
        var t = selectedSplit[1].split("/");
        var selectedFrom = new Date(f[2], f[1] - 1, f[0]);
        var selectedTo = new Date(t[2], t[1] - 1, t[0]);

        var f = dataSplit[0].split("/");
        var t = dataSplit[1].split("/");
        var tableFrom = new Date(f[2], f[1] - 1, f[0]);
        var tableTo = new Date(t[2], t[1] - 1, t[0]);

        if (tableFrom.getTime() >= selectedFrom.getTime() && tableTo.getTime() <= selectedTo.getTime()) {
            return true;
        }
        return false;
    }
    return true;
});