jquery - 输入时jQuery表格搜索所有列
问题描述
嗨,我有一个 Jquery 表搜索,我的要求是当单击输入搜索所有表列时...现在我只能搜索两列...有人可以帮我绑定其余的列,以便在单击输入时整个表将搜索。
所以基本上当有人点击进入时,我需要按姓名、电子邮件、电话、价格进行搜索
感谢您的帮助。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Table search on enter</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<style>
td,tr, th{
padding:15px;
}
</style>
</head>
<body>
<input type="search" class="light-table-filter" data-table="order-table" placeholder="Filtrer" />
<a class="button"><i class="fa fa-exclamation-circle"></i> Report Error</a>
<br />
<section class="table-box">
<table class="order-table">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Williams</td>
<td>williams@ooutlook.com</td>
<td>644</td>
<td>56453454</td>
</tr>
<tr>
<td>Amber Samuels</td>
<td>amber@james.com</td>
<td>64345</td>
<td>734534</td>
</tr>
<tr>
<td>Rehen</td>
<td>rehen@gmail.com</td>
<td>634534</td>
<td>5345</td>
</tr>
<tr>
<td>Alfred fedric</td>
<td>fedric@gmail.com</td>
<td>634534</td>
<td>123123</td>
</tr>
<tr>
<td>Taylor</td>
<td>taylor@gmail.com</td>
<td>0978098</td>
<td>896899</td>
</tr>
<tr>
<td>Classis</td>
<td>classic@fgf.com</td>
<td>634534</td>
<td>45345</td>
</tr>
</tbody>
</table>
</section>
<script>
// Can search only two columns I want to search all columns
var currentMonth;
var nameRowIndex = 0; // O is first column Name
var emailRowIndex = 1; // 1 is Second column Email
$('.light-table-filter').change(function(){
//The Event for Month change.
currentMonth = $('.light-table-filter').val();
changeData();
});
function changeData(){
var tables = document.getElementsByClassName('order-table');//Table Name goes here..
[].forEach.call(tables, function(table) {
[].forEach.call(table.tBodies, function(tbody) {
[].forEach.call(tbody.rows, _filter);
});
});
}
function _filter(row) {
console.log("row: " + row.cells[nameRowIndex,emailRowIndex].textContent);
var text = row.cells[nameRowIndex,emailRowIndex].textContent.toLowerCase(), val = currentMonth;
row.style.display = text.indexOf(val) === -1 ? 'none' : 'table-row';
}
</script>
</body>
</html>
解决方案
而不是你的 jquery 使用下面的代码,它将适用于所有列
$(document).ready(function(){
$(".light-table-filter").keypress(function (e) {
var key = e.which;
if(key == 13) // the enter key code
{
var value = $(this).val().toLowerCase();
$(".order-table tbody tr").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
}
});
});
// Can search only two columns I want to search all columns
$(document).ready(function(){
$(".light-table-filter").keypress(function (e) {
var key = e.which;
if(key == 13) // the enter key code
{
var value = $(this).val().toLowerCase();
$(".order-table tbody tr").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
}
});
});
/*var currentMonth;
var nameRowIndex = 0; // O is first column Name
var emailRowIndex = 1; // 1 is Second column Email
var phoneRowIndex = 2;
var priceRowIndex = 3;
$('.light-table-filter').change(function(){
//The Event for Month change.
currentMonth = $('.light-table-filter').val();
changeData();
});
function changeData(){
var tables = document.getElementsByClassName('order-table');//Table Name goes here..
[].forEach.call(tables, function(table) {
[].forEach.call(table.tBodies, function(tbody) {
[].forEach.call(tbody.rows, _filter);
});
});
}
function _filter(row) {
var text = row.cells[nameRowIndex,emailRowIndex,phoneRowIndex,priceRowIndex].textContent.toLowerCase(), val = currentMonth;
row.style.display = text.indexOf(val) === -1 ? 'none' : 'table-row';
}*/
td,tr, th{
padding:15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="search" class="light-table-filter" data-table="order-table" placeholder="Filtrer" />
<a class="button"><i class="fa fa-exclamation-circle"></i> Report Error</a>
<br />
<section class="table-box">
<table class="order-table">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td>Williams</td>
<td>williams@ooutlook.com</td>
<td>644</td>
<td>56453454</td>
</tr>
<tr>
<td>Amber Samuels</td>
<td>amber@james.com</td>
<td>64345</td>
<td>734534</td>
</tr>
<tr>
<td>Rehen</td>
<td>rehen@gmail.com</td>
<td>634534</td>
<td>5345</td>
</tr>
<tr>
<td>Alfred fedric</td>
<td>fedric@gmail.com</td>
<td>634534</td>
<td>123123</td>
</tr>
<tr>
<td>Taylor</td>
<td>taylor@gmail.com</td>
<td>0978098</td>
<td>896899</td>
</tr>
<tr>
<td>Classis</td>
<td>classic@fgf.com</td>
<td>634534</td>
<td>45345</td>
</tr>
</tbody>
</table>
</section>
推荐阅读
- database - 在 vertica 数据库中加载大量数据(100 gb)的最快方法是什么?
- json - curl json输出键值到带有jq或grep的变量
- php - 带有变量的来自和到 PHP 的 Guzzle POST 请求
- javascript - 我正在尝试使用 client.js 进行 trello 身份验证。无论我使用什么网址,我都会收到无效的 return_url
- ios - 是否允许简单的 GPS 应用程序使用 Car play 框架?
- amazon-cloudfront - AWS CloudFront 将新域添加到分发并设置新证书
- android - 如何从 Android Q 中的“webview”访问“图片文件夹(公共目录)中的图像”?
- azure - Azure tfs-cli 不包括所有文件 (.vsix)
- html - 如何在同一行中制作带有标签的响应式按钮组
- mongodb - Loopback/mongodb:查找所有共享某项技能的工作