Filtrowanie wierszy tabeli – dopasowanie do 2 kolumn
<tr> <th class="p-0 border-0"> <div class="input-group"> <span class="input-group-text bg-primary text-white"><i class="fa fa-search"></i></span> <?= $this->Form->text('s_user_str', ['class' => 'form-control form-control-sm', 'id' => 's_user_str']) ?> </div> </th> <th class="p-0 border-0"> <div class="input-group"> <?= $this->Form->text('s_project_str', ['class' => 'form-control form-control-sm', 'id' => 's_project_str']) ?> <span class="input-group-text bg-warning pointer" id="clear-search"><i class="fa fa-times"></i></span> </div> </th> <td class="p-0" colspan="2"></td> </tr>
// Wyszujuje po numerze projektu. Wybrany projekt dodaje jako kontrolkę ukrytą let user_str; let project_str; let userFilter = function(string="") { // szukana fraza // przechodzi przez wszystkie wiersze tbody $("#rcp-body td.user-row").each( function(ind, row) { var text = $(this).text().toLowerCase(); // zawartość kolumny if(text.indexOf(string) === -1) { $(row).closest('tr').addClass('hidden'); } else { $(row).closest('tr').removeClass('hidden'); } }); }; let projectFilter = function(string="") { // szukana fraza // przechodzi przez wszystkie wiersze tbody $("#rcp-body td.project-row").each( function(ind, row) { var text = $(this).text().toLowerCase(); // zawartość kolumny if(text.indexOf(string) === -1) { $(row).closest('tr').addClass('hidden'); } else { $(row).closest('tr').removeClass('hidden'); } }); }; // Usuwa wyniki, pola ukryte function clearFiltering() { $('#rcp-body').find("tr").removeClass('hidden'); $("#s_user_str").val(""); $("#s_project_str").val(""); } $("#clear-search").on('click', clearFiltering); // klinięto WYCZYŚĆ $("#s_user_str").on('keyup', function(){ var user_str = $(this).val(); var name_len = user_str.length; if( name_len >= 3 ) { var t; if(t) { window.clearTimeout(t); } t = window.setTimeout( function() { userFilter(user_str.toLowerCase()); }, 200 ); } else if( name_len === 0) { clearFiltering(); } }); $("#s_project_str").on('keyup', function(){ var project_str = $(this).val(); var project_len = project_str.length; if( project_len >= 3 ) { var t; if(t) { window.clearTimeout(t); } t = window.setTimeout( function() { projectFilter(project_str.toLowerCase()); }, 200 ); } else if( project_len === 0) { clearFiltering(); } });