javascript - 如何编辑此表过滤器脚本以通过预定义的搜索字符串获取结果?

标签 javascript html date filter

我正在使用这个脚本:

var LightTableFilter = (function(Arr) {

    var _input;

    function _onInputEvent(e) {
        _input = e.target;
        var tables = document.getElementsByClassName(_input.getAttribute('data-table'));
        Arr.forEach.call(tables, function(table) {
            Arr.forEach.call(table.tBodies, function(tbody) {
                Arr.forEach.call(tbody.rows, _filter);
            });
        });
    }

    function _filter(row) {
        var text = row.textContent.toLowerCase(), val = _input.value.toLowerCase();
        row.style.display = text.indexOf(val) === -1 ? 'none' : 'table-row';
    }

    return {
        init: function() {
            var inputs = document.getElementsByClassName('light-table-filter');
            Arr.forEach.call(inputs, function(input) {
                input.oninput = _onInputEvent;
            });
        }
    };
})(Array.prototype);

document.addEventListener('readystatechange', function() {
    if (document.readyState === 'complete') {
        LightTableFilter.init();
    }
});

})(document);

这个输入:

<input type="search" class="light-table-filter" data-table="order-table">

当我在过滤器输入中输入内容时,它会过滤一个表格,因此我只能看到其中与文本匹配的条目。像这样:http://codepen.io/chriscoyier/pen/tIuBL 。 现在我有一个带有日期列的表格。我想只显示当前月份的日期。因此不再需要用户输入。 我尝试将输入替换为当前月份,但没有成功。 :-/有人有建议吗?

最佳答案

如果这是在客户端上完成的,则意味着您发送的数据超出了所需的数据,并且您相信客户端时间设置是准确的。因此,最好在服务器上执行此操作,这样您就不会获得超出所需的数据,不会向客户端发送冗余数据,并且不依赖于客户端时间设置或脚本。

无论如何,假设您的日期格式为 dd/mm/yyyy,则可以使用以下方法获取所需格式的当前月份:

var m = new Date().getMonth() + 1;
var monthString = '/' + ('0' + m).slice(-2) + '/';

现在隐藏行时使用:

row.style.display = text.indexOf(monthString) === -1 ? 'none' : '';

当然,您可以将monthString修改为任何适合的内容。

我更喜欢通过将 display 设置为 '' (空字符串)来撤消隐藏内容,这样它们就会采用默认或继承的样式,无论是什么,我都不必这样做知道它是什么。

我还建议您仅定位包含日期的单元格,以防该行的 textContent 将其他一些字符串连接成误报,因此:

var text = row.cells[i].textContent.toLowerCase()

其中i是包含日期的单元格的索引。

关于javascript - 如何编辑此表过滤器脚本以通过预定义的搜索字符串获取结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156597/

相关文章:

javascript - 我想在android中的TextView上显示html文件的内容(带格式)

java - 如何检查正确的日期格式模式?

javascript - 从 IntelliJ 中的 console.log 获取更多详细信息

javascript - 在 HTML5 网络应用程序中“模拟”文件下载

html - 我的 CSS 不会显示在我的索引页面之后

javascript - 检查是否有两个以上的日期范围重叠

java - Unix 时间戳的时间转换

javascript - 为什么 JSON 不支持 NaN 时 MongoDB 允许 NaN 值?

javascript - 用 onclick 替换数组元素

javascript - 未知提供程序 : $rootElementProvider when using $injector to get $location service before angular. Bootstrap