首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用DataTables在数字范围之间筛选并隐藏不在范围内的行?

问如何使用DataTables在数字范围之间筛选并隐藏不在范围内的行?
EN

Stack Overflow用户
提问于 2015-04-30 16:57:40
回答 2查看 1.7K关注 0票数 1

我试图通过两个输入字段获取输入。最小字段和最大字段。使用最小值和最大值,我想查看某一列,并检查该列中单元格的值是否在范围之间。如果单元格不在最小值和最大值的范围内,我想隐藏行。

下面是我一直在使用的内容:(目前没有按预期工作)。

​

代码语言:javascript
复制
$('table').DataTable();

var counterLow = $('#counter-low'),
    counterHigh = $('#counter-high');

function filterAge() {
    table.columns(1).every(function () {
        var min = +counterLow.val(),
            max = +counterHigh.val();

        this.data().each(function (data, index) {
            if (data > min && data < max) {
                table.row(index).child.show();
            } else {
                table.row(index).child.hide();
            }
        });
    });
}
counterLow.on('keyup', filterAge);
counterHigh.on('keyup', filterAge);
代码语言:javascript
复制
table {
    width: 100%;
    border: 1px solid #ccc;
    border-collapse: collapse;
}
table th, table td {
    border: 1px solid #ccc;
    padding: 8px;
    text-align: left;
}
input {
    border: 1px solid #ccc;
    padding: 8px;
    margin-bottom: 20px;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<input id="counter-low" type="text" placeholder="Minimum age" />
<input id="counter-high" type="text" placeholder="Maximum age" />
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Jon</td>
            <td>64</td>
        </tr>
        <tr>
            <td>Bill</td>
            <td>86</td>
        </tr>
        <tr>
            <td>Joel</td>
            <td>12</td>
        </tr>
        <tr>
            <td>Fred</td>
            <td>35</td>
        </tr>
    </tbody>
</table>

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-30 18:57:38

试试这个*更新的

代码语言:javascript
复制
var table = $('table').DataTable();
$.fn.dataTable.ext.search.push(function (settings, data, dataIndex) {
    return parseInt(data[1]) >= parseInt($('#counter-low').val() || data[1]) 
        && parseInt(data[1]) <= parseInt($('#counter-high').val() || data[1])
});
$('#counter-low, #counter-high').on('keyup', table.draw);

JSFiddle

票数 2
EN

Stack Overflow用户

发布于 2015-04-30 19:56:41

过了一段时间,我能够通过自定义过滤器获得所需的东西。这是我用过的。

代码语言:javascript
复制
jQuery.fn.dataTableExt.afnFiltering.push(
    function (oSettings, aData, iDataIndex) {
        var min = +counterLow.val() || table.column(1).data().sort()[0],
            max = +counterHigh.val() || table.column(1).data().sort().reverse()[0],
            age = +aData[1];

        return !!(age >= min && age <= max) &&
               !(isNaN(min) || isNaN(max) || isNaN(age));
    }
);

小提琴

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29973625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档