title: how to prevent .keyup() firing for non-printing key presses
body: <p>I'm making a filter tool using <code>.keyup()</code></p>
  
  <p>To make it look a bit nicer, I have the table fadeOut before the non-matching rows are hidden and then fadeIn once it's done. </p>
  
  <pre><code>$('tbody').animate({
      opacity: 0
  }, 300,function(){
          $('tbody tr').addClass('filter_hide');
          $('tbody tr td.'+f+':icontains("'+v+'")').parents('tr').removeClass('filter_hide');
  
      $('.entry_total').text(count);
      setTimeout(function(){
          changeShow(1);
      }, 400)
  
  });
  </code></pre>
  
  <p><em>note: <code>:icontains</code> is just a case-insensitive version of <code>:contains</code>. <code>v</code> is the val() of the changed input. <code>changeShow()</code> updates my pagination with the new results only, and brings the table visible again</em></p>
  
  <p>It all works great except one thing: the code is triggered when I press shift, caps, tab and so on, so the table fades out and fades back in again for these key presses, which looks bad. </p>
  
  <p>How can I exclude these 'non-printing' key presses from firing the function?</p>