jQuery Datatables - 根据url值预过滤特定的表列

时间:2018-01-02 15:38:41

标签: jquery datatables

使用jQuery数据表,是否可以根据网址值仅在页面加载时搜索特定列?

例如,如果url以live结尾,则过滤表列Is is live(这个样本中的索引是4)?

url = "website.com/circuits/live"
if ("url ends with live"){ 
    $('#circuit_list').DataTable({
        column index 4 filter "Live"
     })
}

这是表格样本

<table width="100%" class="table table-striped table-bordered table-hover dataTable no-footer dtr-inline" id="circuit_list" role="grid" style="width: 100%;">
<thead>     
    <tr>
        <th>&nbsp;</th>
        <th>Circuit</th>
        <th>Location</th>
        <th>Name</th>
        <th>Is Live</th>
        ...
    </tr>   
</thead>
<tbody>
    <tr>
        <td>EDIT</td>
        <td>DSL</td>
        <td>Liverpool</td>
        <td>Bills DSL</td>
        <td>Not Live</td>
        ...
    </tr>
        <tr>
        <td>EDIT</td>
        <td>DSL</td>
        <td>Manchester</td>
        <td>Bobs DSL</td>
        <td>Live</td>
        ...
    </tr>
    ...
</tbody>
</table>

<script>
$(document).ready(function() {
    $('#showroom_list').DataTable({
        "pageLength": 30,
        responsive: true
    });

});
</script>

3 个答案:

答案 0 :(得分:3)

如果我们有问题中描述的RESTful网址,那么最简单 抓住最后一部分的方法是

document.location.href.split('/').pop()

现在在initComplete回调中执行搜索:

$('#circuit_list').DataTable({
  initComplete: function() {
    this
     .api()
     .column(4)
     .search( document.location.href.split('/').pop() )
     .draw()
  }
})

执行完全匹配搜索,即不包括包含&#34; live&#34;当搜索字词为&#34; not live&#34;转&#34;聪明&#34;搜索,请参阅column().search(input, regex, smart)

.search( document.location.href.split('/').pop(), false, false)

这也可以通过使用正则表达式搜索来实现:

.search( '^'+document.location.href.split('/').pop()+'$', true, false)

如果您想进行全表搜索,只需使用search选项就更方便了:

$('#circuit_list').DataTable({
  search: {
    search: document.location.href.split('/').pop()
  }
})

这样做的好处是,过滤器框也会自动填充搜索词。

答案 1 :(得分:0)

您可以测试此选项,仅查找第3列吗?

android{
   configurations {
   all*.exclude group: 'com.android.volley'
   }
}

如文档中所述:https://datatables.net/reference/api/column().search()

答案 2 :(得分:0)

DataTables具有自定义过滤功能。     https://datatables.net/examples/plug-ins/range_filtering.html

因此,我建议您在页面上使用查询字符串参数加载的jquery DIV上方创建一个文本框,并使用自定义范围过滤。

这是一个id为yourcustomfieldsid的文本框

的示例
$.fn.dataTable.ext.search.push(
    function( settings, data, dataIndex ) {

        var yourValue = $('#yourcustomfieldsid').val();
        var yourData = data[3];
        return yourData.indexOf(yourValue) >= 0;
    }
);

并获取网址参数

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

并将文本框设置为URL

中的值
$(document).ready( function(){
    $('#yourcustomfieldsid').val( getUrlVars()["querystringparametername"] );
});

当文本框更改为文本框更改时刷新表格时,您将需要一个on change事件。

$('#yourcustomfieldsid').change(function() {
    $('$jquerytableid').DataTable().ajax.reload();
});

我对任何错别字道歉,但这应该是概念。