Ajax -onKeyUp – filter table rows

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();
  }
});