[英]Filter Select (Drop Down) Options Based on Value Selected in another Select
[英]How to filter an html table based on drop down selected value?
我有一个包含一些数据行的 html 表,其中有一列名为状态。 有进行中、待办、已完成三种状态。 我在顶部有一个下拉菜单。 下拉列表包含任何、进行中、待办事项、已完成。 如何根据选定的下拉值加载数据。 下面我附上了我的页面的图片。
我的代码在下面。 表数据来自数据库。
<div class="table-wrapper">
<div class="table-title">
</div>
<div class="table-filter">
<div class="row">
<div class="col-sm-3">
<div class="show-entries">
<span>Show</span>
<select class="form-control">
<option>5</option>
<option>10</option>
</select>
<span>entries</span>
</div>
</div>
<div class="col-sm-9">
<div class="filter-group">
<label>Status</label>
<select class="form-control">
<option>Any</option>
<option>Completed</option>
<option>In Progress</option>
<option>To Run</option>
</select>
</div>
<span class="filter-icon"><i class="fa fa-filter"></i></span>
</div>
</div>
</div>
<form method="post" action="activeInactive.php">
<table class="paginated table table-striped table-hover">
<thead>
<tr>
<th>Test Name</th>
<th>Created By</th>
<th>Last updated</th>
<th>Test status</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="test_table">
<?PHP
$test_access = 0;
while($row = mysqli_fetch_array($tests_under_user)){
echo '<td width=250px; title="'.$testName.'"><a href="">'.$row['name'].'</a></td>';
echo '<td title="'.$row['created'].'">'.$row['created'].'</td>';
echo '<td title="'.$row['edited'].'">'.$row['edited'].'</td>';
echo '<td>In Progress</td>';
echo '<td>';
echo '<a href="" class="edit" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Edit"></i></a>';
echo '<a href="" class="delete" name="delete" data-toggle="modal" Onclick="return ConfirmDelete()"><i class="material-icons" data-toggle="tooltip" title="Delete"></i></a>';
echo '<a href="" class="copy" name="copy" data-toggle="modal"><i class="material-icons" data-toggle="tooltip" title="Copy" style="color: #2874A6">file_copy</i></a>';
echo '</td>';
}
?>
</tbody>
</table>
</form>
</div>
这可能对你有帮助。
访问 此处尝试使用 select 标签进行过滤。
function myFunction() { var input, filter, table, tr, td, i; input = document.getElementById("mylist"); filter = input.value.toUpperCase(); table = document.getElementById("myTable"); tr = table.getElementsByTagName("tr"); for (i = 0; i < tr.length; i++) { td = tr[i].getElementsByTagName("td")[0]; if (td) { if (td.innerHTML.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } }
* { box-sizing: border-box; } #myInput { background-image: url('/css/searchicon.png'); background-position: 10px 10px; background-repeat: no-repeat; width: 100%; font-size: 16px; padding: 12px 20px 12px 40px; border: 1px solid #ddd; margin-bottom: 12px; } #mylist { background-position: 10px 10px; background-repeat: no-repeat; width: 100%; font-size: 16px; padding: 12px 20px 12px 40px; border: 1px solid #ddd; margin-bottom: 12px; } #myTable { border-collapse: collapse; width: 100%; border: 1px solid #ddd; font-size: 18px; } #myTable th, #myTable td { text-align: left; padding: 12px; } #myTable tr { border-bottom: 1px solid #ddd; } #myTable tr.header, #myTable tr:hover { background-color: #f1f1f1; }
<h2>My Customers</h2> <select id="mylist" onchange="myFunction()" class='form-control'> <option>A</option> <option>b</option> <option>c</option> </select> <table id="myTable"> <tr class="header"> <th style="width:60%;">Name</th> <th style="width:40%;">Country</th> </tr> <tr> <td>Alfreds Futterkiste</td> <td>Germany</td> </tr> <tr> <td>Berglunds snabbkop</td> <td>Sweden</td> </tr> <tr> <td>Island Trading</td> <td>UK</td> </tr> <tr> <td>Koniglich Essen</td> <td>Germany</td> </tr> <tr> <td>Laughing Bacchus Winecellars</td> <td>Canada</td> </tr> <tr> <td>Magazzini Alimentari Riuniti</td> <td>Italy</td> </tr> <tr> <td>North/South</td> <td>UK</td> </tr> <tr> <td>Paris specialites</td> <td>France</td> </tr> </table>
由于您有大量数据,最好的方法是调用服务器并在 SQL 级别过滤数据。
通过这种方式,您可以向服务器询问特定页面和过滤器参数,并仅获取该数据,从而缩短响应时间。
此外,您不必担心客户端中的任何过滤逻辑。 您只需显示从服务器收到的数据。
如果你坚持在客户端做这个工作,你首先需要意识到<?PHP ?>
里面的部分是在服务端渲染的。
在这种情况下,您需要将所有数据从服务器获取到可以像 JavaScript 对象一样运行过滤逻辑的东西(通常使用 AJAX 来获取 JSON 数据)。
获取数据并对其进行过滤后,您可以使用 JavaScript 动态创建表格行并更新分页数据。
有许多用于进行 AJAX 调用和模板化的 JavaScript 库和框架(例如Angular 、 React和Vue ),但您也可以使用 vanilla JavaScript 自己完成(参见AJAX 、 createElement和removeChild )。
虽然 Aman Deep 的回答很有帮助,但在某些情况下它是缺乏的:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.