Jquery 数据表的自定义筛选器
我正在尝试将自己的筛选器添加到数据表的第二列。下面是我的代码Jquery 数据表的自定义筛选器,jquery,html,twitter-bootstrap,css-tables,Jquery,Html,Twitter Bootstrap,Css Tables,我正在尝试将自己的筛选器添加到数据表的第二列。下面是我的代码 <!doctype html> <html> <head> <style> table{ border:1px solid blue; } tr{ border:1px solid blue; } td{ border:1px solid blue; } tfoot input { width: 100%; padding: 3px;
<!doctype html>
<html>
<head>
<style>
table{
border:1px solid blue;
}
tr{
border:1px solid blue;
}
td{
border:1px solid blue;
}
tfoot input {
width: 100%;
padding: 3px;
box-sizing: border-box;
}
</style>
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="http://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="http://cdn.datatables.net/1.10.12/css/jquery.dataTables.min.css">
<script>
// http://obvcode.blogspot.com/2007/11/easiest-way-to-check-ie-version-with.html
$(document).ready(function(){
var table = $('#mine').DataTable();
$('#mine tfoot th').each( function () {
var title = $(this).text();
$(this).html( '<input type="text" placeholder="Search '+title+'" />' );
} );
$('#myInput').keyup( function() {
table.draw();
} );
});
</script>
<script>
function myFunction() {
// Declare variables
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("mine");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the search query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[1];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
</script>
</head>
<body>
<table border="0" cellpadding="5" cellspacing="5">
<tbody><tr>
<td>ade:</td><td>
<input type="text" id="myInput" name="myInput" onkeyup="myFunction()" placeholder="Search for names.." title="Type in a name">
</td></tr>
</tbody></table>
<table id="mine" class="display" width="100%" cellspacing="0">
<thead>
<th>a</th>
<th>a</th>
<th>a</th>
<th>a</th>
<th>a</th>
<th>a</th>
</thead>
<tfoot>
<tr>
<th>a</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
<tbody>
<tr><td>saf</td>
<td>saf</td>
<td>saf</td>
<td>saf</td>
<td>saf</td>
<td>saf</td></tr>
<tr><td>a</td>
<td>q</td>
<td>saf</td>
<td>b</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>q</td>
<td>b</td>
<td>saf</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>q</td>
<td>b</td>
<td>b</td>
<td>saf</td>
<td>c</td></tr>
<tr><td>saf</td>
<td>saf</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>c</td>
<td>a</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>saf</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>saf</td></tr>
<tr><td>a</td>
<td>saf</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>saf</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>saf</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>b</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
<tr><td>a</td>
<td>a</td>
<td>b</td>
<td>c</td>
<td>b</td>
<td>c</td></tr>
</tbody>
</table>
</body>
</html>
桌子{
边框:1px纯蓝色;
}
tr{
边框:1px纯蓝色;
}
运输署{
边框:1px纯蓝色;
}
tfoot输入{
宽度:100%;
填充:3倍;
框大小:边框框;
}
// http://obvcode.blogspot.com/2007/11/easiest-way-to-check-ie-version-with.html
$(文档).ready(函数(){
var table=$('#mine').DataTable();
$('#mine tfoot th')。每个(函数(){
var title=$(this.text();
$(this.html(“”);
} );
$('#myInput').keyup(函数(){
table.draw();
} );
});
函数myFunction(){
//声明变量
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“myInput”);
filter=input.value.toUpperCase();
表=document.getElementById(“我的”);
tr=table.getElementsByTagName(“tr”);
//循环遍历所有表行,并隐藏与搜索查询不匹配的行
对于(i=0;i-1){
tr[i].style.display=“”;
}否则{
tr[i].style.display=“无”;
}
}
}
}
ade:
A.
A.
A.
A.
A.
A.
A.
位置
办公室
年龄
开始日期
薪水
苏丹武装部队
苏丹武装部队
苏丹武装部队
苏丹武装部队
苏丹武装部队
苏丹武装部队
A.
Q
苏丹武装部队
B
B
C
A.
Q
B
苏丹武装部队
B
C
A.
Q
B
B
苏丹武装部队
C
苏丹武装部队
苏丹武装部队
A.
B
C
C
A.
B
A.
B
C
C
A.
B
A.
B
C
C
A.
B
C
A.
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
B
A.
B
C
C
A.
B
A.
B
C
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
B
A.
B
C
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
B
A.
B
C
C
A.
B
A.
B
C
C
A.
B
A.
B
苏丹武装部队
C
A.
A.
B
C
B
苏丹武装部队
A.
苏丹武装部队
B
C
B
C
A.
苏丹武装部队
B
C
B
C
A.
A.
苏丹武装部队
C
B
C
A.
B
A.
B
C
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
A.
A.
B
C
B
C
过滤器在第一页中工作正常。但当过滤器应用于整个表时,若该项出现在表的第一页中,它会过滤特定的表行。但是,如果该项出现在表的下一页中,则不会应用筛选器。有谁能帮我解决这个问题吗?这是因为表的其余部分对dom不可用,您需要使用datatables API对其进行过滤。有点让人困惑,但datatables通常会按调用的方式加载每个页面,以节省开销。您不能仅使用jquery搜索整个datatable(除非整个表显示在页面上),您需要使用API 但是,datatables有一个超级酷的正则表达式过滤器搜索,您可以应用它 下面是一段代码的片段,可能会有所帮助。尽管我们可能使用不同的版本(dataTable与dataTable) 以下是datatables搜索API的链接:
在
myFunction
中,您可以记录tr.length
?它通常与在table中获取所有表行有关。getElementsByTagName(“tr”)
它不会获取所有表行,因为datatable.css
隐藏了表的其余部分rows@Arvind对你说的对。
var search_text = [search text]
var table = $('[table selector]').dataTable().api();
if (search_text){
table
.columns(3)
.search('[REGEX SEARCH TEXT]', true, false)
.draw();
}
else{
table
.columns()
.search('')
.draw();
}
});