【发布时间】:2020-08-12 06:35:58
【问题描述】:
我正在使用 Jquery 数据表并使用依赖于 table 的 select 标记,但 Jquery 脚本在第二页及之后不起作用。我想根据所有页面中的选择标签过滤表中的结果,但是一旦我从选择标签中选择选项,它只会过滤第一页中存在的行,而对于剩余的页面,我必须再次使用选择标签。我正在共享代码 sn-p。请提供一些建议,使其适用于任何页面的所有行。
<body>
<select id="cato" class="form-control" >
<option disabled selected="true">-Select Category-</option>
<option>Electronics</option>
<option>Sports</option>
</select>
<table class="table table-bordered" id="example" data-order='[[ 0, "desc" ]]' data-page-length='3'>
<thead>
<tr>
<th>Product</th>
<th>Subcategory</th>
<th>Category</th>
</tr>
</thead>
<tbody id="r">
<tr>
<td>Samsung</td>
<td>Mobile</td>
<td>Electronics</td>
</tr>
<tr>
<td>Racket</td>
<td>Tennis</td>
<td>Sports</td>
</tr>
<tr>
<td>Bat</td>
<td>Cricket</td>
<td>Sports</td>
</tr>
<tr>
<td>Dell</td>
<td>Laptop</td>
<td>Electronics</td>
</tr>
<tr>
<td>Iphone</td>
<td>Mobile</td>
<td>Electronics</td>
</tr>
</tbody>
</table>
</body>
表格
<script type="text/javascript">
var table = $('#example').DataTable({
"bLengthChange": false,
searching: false,
});
</script>
jQuery
<script>
$('#cato').on('change', function() {
var filter, table, tr, td, i;
filter=$("#cato option:selected").text().toUpperCase();
table = document.getElementById("r");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[2];
if (td) {
if ((td.innerHTML.toUpperCase().indexOf(filter) > -1))
{
tr[i].style.display = "";
}
else {
tr[i].style.display = "none";
}
}
}
});
【问题讨论】:
标签: javascript html jquery datatable datatables