通过单击链接查询过滤器列表并将其显示在表中



我试图通过href值获得propper搜索,但当我点击每个值时,它会显示一个空白表,并且值的索引总是0。我几乎什么都试过了,但都没用。我认为主要问题在于脚本,因为它总是向我显示每个元素的空白索引。

有人能告诉我我缺了什么吗?

这是代码:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>  // This script is working
$(document).ready(function(){
$("#myInput").on("keyup", function() {        
var value = $(this).val().toLowerCase();
$("#myTable tr").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
</script>
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;

}
.odd {
background: #5a95ee;
}
.even{
background: #7eb9e0;
}
</style>
</head>
<body>
<input id="myInput" type="text" placeholder="Search.." style="float: right; width: 500px;" value="">
<br><br>
<table>
<thead>
<tr>
<th>Predmet</th>
<th>Tip</th>
<th>Nastavnik</th>
<th>Grupe</th>
<th>Dan</th>
<th>Termin</th>
<th>Ucionica</th>
</tr>

</thead>
{% for raspored in rasporedi %}
<tbody id="myTable">
<tr class="{{ loop.cycle('odd', 'even') }}">

<td > {{raspored['predmet']}}</td>
<td>{{raspored['tip']}}</td>
<td >{{raspored['nastavnik']}}</td>
<td>{{raspored['grupe']}}</td>           // Python list ( data from mongodb )
<td>{{raspored['dan']}}</td>
<td>{{raspored['termin']}}</td>
<td>{{raspored['ucionica']}}</td>
</tr>

</tbody>
{% endfor %}


</table>

<br> <br>
<table style="width: 400px;" style="margin:0 auto;">
<thead>
<tr >

<th>Nastavnik</th>
<th>Ucionica</th>
</tr>

</thead>
{% for raspored in dr %}
<tbody id="myTabledva">

<tr>

<td class="nastavnik {{ loop.cycle('odd', 'even') }}"  > <a href="#" >{{raspored['nastavnik']}}</a></td>  
<td class="ucionica {{ loop.cycle('odd', 'even') }}">  <a href="#" >{{raspored['ucionica']}}</a></td>
</tr>

</tbody>




<script>    // Something is wrong with this script but i don't know what
$(document).on("click", ".nastavnik", function(){
var nastavnik = $("#myInput").val($(this).text());  

$("#myTable tr").filter(function() { 

$(this).toggle($(this).text().toLowerCase().indexOf(nastavnik) > -1 )
});

});

</script> 
{% endfor %}

</table>
</body>
</html>

<script>    // Something is wrong with this script but i don't know what
$(document).on("click", ".nastavnik", function(){
var nastavnik = $("#myInput").val($(this).text());  

$("#myTable tr").filter(function() { 

$(this).toggle($(this).text().toLowerCase().indexOf(nastavnik) > -1 )
});

});

</script> 

您可能想要这样的东西:

$(document).on("click", ".nastavnik", function() {
let nastavnik = $("#myInput").val(); //<-- get, not set, the entere val
$("#myTable tr").show().filter(function() {  
return $(this).text().toLowerCase().indexOf(nastavnik.toLowerCase()) == -1;
}).hide();
});

逻辑:

  1. 获取输入值
  2. 获取所有表行-默认情况下显示所有
  3. 将表行筛选为不包含输入搜索的行
  4. 隐藏那些行

最新更新