我有一种情况需要确定当前是否通过搜索过滤了jQuery-DataTables。
有没有办法检查这个?
答案 0 :(得分:0)
好的,我想出了一种方法。基本上我正在检查搜索输入是否有值。
if($('#myIdnameHere').find('input[type=search]').val() == ''){
//then I know that it isn't filtered.
}
答案 1 :(得分:0)
您可以检查搜索输入的value
。但是DatatTables
库提供了更好的解决方案。
要获取全局搜索查询,可以使用不带参数的search()
方法并比较返回的字符串:
let query = table.search();
console.log(query); // outputs a string
但是还有其他一些选项可以在DataTables中执行数据搜索,例如列搜索。使用列搜索,您可以对每个列进行单独查询,从而执行更复杂的搜索。这些查询不会出现在搜索输入中,也不会由DataTables-Object的search()
方法返回。要获取列查询,您可以遍历所有列并利用search()
方法读取当前查询值:
let queries = [];
let columns = table.columns().indexes();
for (let i = 0; i < columns.length; i++) {
queries.push(table.column(i).search());
}
console.log(queries); // outputs an array of strings
示例:
$(document).ready(function() {
let table = $('#example').DataTable();
$('#get-queries').on('click', function(event){
event.preventDefault();
// get and output global query
let query_global = table.search();
console.log('global query:');
console.log(query_global);
// get and output column queries
let query_columns = [];
let columns = table.columns().indexes();
for (let i = 0; i < columns.length; i++) {
query_columns.push(table.column(i).search());
}
console.log('column queries:');
console.log(query_columns);
});
$('#custom-search-1').on('click', function(event){
event.preventDefault();
// perform global query (and draw data)
table.search('Alpha').draw();
});
$('#custom-search-2').on('click', function(event){
event.preventDefault();
// perform different queries on columns
table.columns(0).search('Alpha');
table.columns(1).search('Test');
// draw data
table.draw();
});
$('#reset').on('click', function(event){
event.preventDefault();
// reset global query
table.search('');
// reset column queries
table.columns().search('');
// draw data
table.draw();
});
});
#get-queries {
font-weight: bold;
color: green;
}
#custom-search-1,
#custom-search-2 {
font-weight: bold;
color: orange;
}
#reset {
font-weight: bold;
color: red;
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet"/>
<button id="get-queries">Get queries</button> /
<button id="custom-search-1">Search global</button>
<button id="custom-search-2">Search in columns</button> /
<button id="reset">Reset</button>
<hr>
<table id="example">
<thead>
<tr><th>Name</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>Test-1</td><td>Test 1234</td></tr>
<tr><td>Test-3</td><td>I dont know!</td></tr>
<tr><td>Test-2</td><td>Another...</td></tr>
<tr><td>Alpha-1</td><td>Apple Test</td></tr>
<tr><td>Alpha-2</td><td>Banana Test</td></tr>
<tr><td>Alpha-3</td><td>Coconut</td></tr>
<tr><td>Beta-1</td><td>Beta</td></tr>
<tr><td>Beta-2</td><td>Not Alpha</td></tr>
</tbody>
</table>