Filtruj tabelę według wartości wejściowej, w górę klawisza (upraszczaj mój kod) [zamknięty]
Mam już rozwiązanie, ale jest ono bałaganiarskie i może wykorzystywać pewne zmiany. Zasadniczo mam dwie tabele na stronie i każda tabela ma pole tekstowe wejściowe dla każdej kolumny z odpowiednią nazwą filtra. Chodzi o to, że podczas gdy użytkownik wpisuje powyżej tej kolumny, tabela jest filtrowana przez każdą zmienną. Tutaj znalazłem swoje rozwiązanie, ale dotyczy to tylko jednego pola wejściowego i jednej tabeli. Również po wyczyszczeniu pola wprowadzania cała tabela zostanie wyczyszczona. Podoba mi się, że ten przykład nie uwzględnia wielkości liter, ale zawiera kilka błędów.http://www.marceble.com/2010/02/simple-jquery-table-row-filter/ Oto jsfiddle, które zestawiłem, ale nie filtruje tak, jak powinno.http://jsfiddle.net/anschwem/mAAvW/
Kod:
<script>
$(document).ready(function() {
//Declare the custom selector 'containsIgnoreCase'.
$.expr[':'].containsIgnoreCase = function(n,i,m){
return jQuery(n).text().toUpperCase().indexOf(m[3].toUpperCase())>=0;
};
$("#searchInput").keyup(function(){
$("#fbody").find("tr").hide();
var data = this.value.split(" ");
var jo = $("#fbody").find("tr");
$.each(data, function(i, v){
//Use the new containsIgnoreCase function instead
jo = jo.filter("*:containsIgnoreCase('"+v+"')");
});
jo.show();
}).focus(function(){
this.value="";
$(this).css({"color":"black"});
$(this).unbind('focus');
}).css({"color":"#C0C0C0"});
});
</script>
HTML:
<table>
<thead>
<tr>
<td><input value="Animals"></td>
<td><input value="Numbers"></td>
</tr>
</thead>
<tbody>
<tr><td>cat</td><td>one</td></tr>
<tr><td>dog</td><td>two</td></tr>
<tr><td>cat</td><td>three</td></tr>
<tr><td>moose</td><td>four</td></tr>
<tr><td>mouse</td><td>five</td></tr>
<tr><td>dog</td><td>six</td></tr>
</tbody>
</table>