javascript - 数据表无法按日期搜索

标签 javascript datatables

我在按日期范围搜索时遇到问题。 我也有日期时间,所以如果我搜索范围,那么它找不到它。 但如果我去掉时间。它可以工作并且可以找到日期范围。

我也尝试了 colspan="2"但它给出了错误:

Cannot set property '_DT_CellIndex' of undefined

我的代码:

    $(document).ready(function () { 

            $.fn.dataTable.ext.search.push(
                function (settings, data, dataIndex) {
                    var min = $('#min').datepicker("getDate");
                    var max = $('#max').datepicker("getDate");
                    var d = data[4].split("/");
                    var startDate = new Date(d[1]+ "/" +  d[0] +"/" + d[2]);

                    if (min == null && max == null) { return true; }
                    if (min == null && startDate <= max) { return true;}
                    if(max == null && startDate >= min) {return true;}
                    if (startDate <= max && startDate >= min) { return true; }
                    return false;
                }
            );


            $("#min").datepicker({ onSelect: function () { oTable.draw(); }, changeMonth: true, changeYear: true , dateFormat:"dd/mm/yy"});
            $("#max").datepicker({ onSelect: function () { oTable.draw(); }, changeMonth: true, changeYear: true, dateFormat:"dd/mm/yy" });
            var oTable = $('#sort').DataTable();
            $('#min, #max').change(function () {
                oTable.draw();
            });
        });

还尝试了此方法添加 colspan 和额外的 td 标签以获取时间: https://jsfiddle.net/yerz2dg2/

但是它给出了错误,正如我在上面提到的那样。

最佳答案

我不确定您的原始代码中发生了什么,因为 JSFiddle 没有对您正在使用的库的引用 (datepicker)。但我稍微重写了它,它现在应该可以工作了:

$(document).ready(function() {
    var oTable = $('#sort').DataTable({
        initComplete: function() {
            $("#min").datepicker({
                onSelect: function() {
                    oTable.draw();
                },
                changeMonth: true,
                changeYear: true,
                dateFormat: "dd/mm/yy"
            });
            $("#max").datepicker({
                onSelect: function() {
                    oTable.draw();
                },
                changeMonth: true,
                changeYear: true,
                dateFormat: "dd/mm/yy"
            });
        }

    });
});

$.fn.dataTable.ext.search.push(
    function(settings, data, dataIndex) {
        var min = (moment($('#min').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#min').val(), "DD/MM/YYYY").format("X") : null;
        var max = (moment($('#max').val(), "DD/MM/YYYY").isValid()) ? ~~moment($('#max').val(), "DD/MM/YYYY").format("X") : null;
        var d = ~~moment(data[1], "DD/MM/YYYY").format("X");
        if (min == null && max == null) {
            return true;
        }
        if (min == null && d <= max) {
            return true;
        }
        if (max == null && d >= min) {
            return true;
        }
        if (d <= max && d >= min) {
            return true;
        }
        return false;
    }
);

工作中JSFiddle 。我添加了momentjs谁真的会费心去理解 JS 日期?

希望有帮助。

关于javascript - 数据表无法按日期搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41453774/

相关文章:

javascript - document.write整个页面,而不仅仅是框架

javascript - 如何通过内联编辑从 jqGrid 列中获取 Select 的文本

jquery - 如何使用 jQuery Datatables fnServerData 处理 HTTP 403

jquery - 数据表可编辑删除

php - 如何在 javascript/jQuery 中通过 url 发送数组

javascript - 获取asp :Button Text into a JavaScript function

javascript - 单击 <a> 文本以检查输入

javascript - 数据表 : Column appears in "show/hide columns" list even if it has "display:none" style

同一数据集中具有父子关系的 JQuery 数据表。如何将其显示为表中的父子行?

javascript - 数据表抛出无效的 JSON 响应