2013-04-21 36 views
1

我有一个文本输入框jQuery的:如何隐藏取决于文本输入表

<input type="text" id="search" /> 

多个HTML桌这样的:

<table id="table1"> 
<thead> 
     <tr> 
       <th>Table1 title</th> 
     </tr> 
     <tr> 
       <th>Name</th> 
       <th>Country</th> 
     </tr> 
</thead> 
<tbody> 
     <tr> 
       <td>Andrew</td> 
       <td>USA</td> 
     </tr> 
     <tr> 
       <td>John</td> 
       <td>Canada</td> 
     </tr> 
</tbody> 
</table> 

我想这取决于数据筛选用户在输入框中键入的内容。现在

我的JS代码:

$(document).ready(function(){ 

$("#search").keyup(function(){ 
     // When value of the input is not blank 
     if($(this).val() != "") 
     { 
       // Show only matching TR, hide rest of them 
       $("#table1 > tbody > tr").hide(); 
       $("#table1 td:contains-ci('" + $(this).val() + "')").parent("tr").show(); 
     } else { 
       // When there is no input or clean again, show everything back 
       $("#table1 tbody > tr").show(); 
       } 
     }); 
}); 

// jQuery expression for case-insensitive filter 
$.extend($.expr[":"], 
{ 
     "contains-ci": function(elem, i, match, array) 
     { 
       return (elem.textContent || elem.innerText || $(elem).text() || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; 
     } 
}); 

一切正常确定。

但是现在我想隐藏包含thead TR的整个表格,如果输入的文本不在表格中。

我该怎么做?

回答

3

试试这个Demo

 $("#search").keyup(function() { 
    var txtVal = $(this).val(); 
    if (txtVal != "") { 
     $(".tblDetails").show(); 
     $(".message").remove(); 
     $.each($('.tblDetails'), function (i, o) { 
      var match = $("td:contains-ci('" + txtVal + "')", this); 
      if (match.length > 0) $(match).parent("tr").show(); 
      else $(this).hide(); 
     }); 
    } else { 
     // When there is no input or clean again, show everything back 
     $("tbody > tr", this).show(); 
    } 
    if($('.tblDetails:visible').length == 0) 
    { 
     $('#search').after('<p class="message">Sorry No results found!!!</p>'); 
    } 
}); 

// jQuery expression for case-insensitive filter 
$.extend($.expr[":"], { 
    "contains-ci": function (elem, i, match, array) { 
     return (elem.textContent || elem.innerText || $(elem).text() || "").toLowerCase().indexOf((match[3] || "").toLowerCase()) >= 0; 
    } 
}); 
+0

谢谢。很棒! – blackst0ne 2013-04-21 06:41:33

+0

但是如果我有多个桌子呢? – blackst0ne 2013-04-21 06:41:53

+0

超过1张桌子?我没有得到那个。你能解释一下这个场景吗? – PSL 2013-04-21 06:43:37