Pokud potřebujeme filtrovat data v obsáhlé tabulce, lze to vytvořit např. za pomoci JavaScriptu (zdroj: w3schools.com).
Nejprve je potřeba vložit před tabulku textové pole pro zadání několika klíčových písmen pro hledání:
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Hledat ve sloupci Jméno.." title="Napište prvních pár písmen hledaného slova">
Důležité jsou především parametry id a onkeyup, které jsou navázány na následný kód.
Nyní vytvoříme tabulku, které přidělíme id „myTable“, které bylo použito v předchozí části.
<table id="myTable"> <tr class="header"> <th style="width:60%;">Jméno</th> <th style="width:40%;">Stát</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>
Dále si do stránky vložíme JavaScript, nejlépe těsně před tag /body.
Opět si všimněte názvu funkce myFunkcion, dále parametru input („myInput„) a parametru table („myTable„).
Tyto názvy samozřejmě můžeme přejmenovat podle libosti, ale vždy ve všech třech částech kódu.
<script> function myFunction() { var input, filter, table, tr, td, i, txtValue; input = document.getElementById("myInput"); 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]; // číslo udává sloupec filtrace (nula je první sloupec) if (td) { txtValue = td.textContent || td.innerText; if (txtValue.toUpperCase().indexOf(filter) > -1) { tr[i].style.display = ""; } else { tr[i].style.display = "none"; } } } } </script>
Důležitý je také parametr v cyklu for, kde je v závorce „0“. To je první sloupec tabulky. Pokud chceme filtrovat data v jiném sloupci, musíme si spočítat, kolikátý je v pořadí a to včetně „nuly“.
Posledním krokem je vytvoření CSS stylu, buď v hlavičce dokumentu nebo v externím souboru. Modifikace je samozřejmě závislá na ostatním vzhledu webové stránky, případně napojení na nějaký framework apod.
<style> * { box-sizing: border-box; } #myInput { width: 100%; font-size: 16px; padding: 12px 20px 12px 12px; 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; } </style>
Výsledek je možné si vyzkoušet v tomto demu.