2016-05-12 55 views
0

我有一個表,其中包含一些隱藏的和不可打印的單元。 我有一個腳本,在這張表中搜索並顯示想要的單元格, 但該腳本不能排除隱藏和noprint <td> s。 你能幫我解決這個問題嗎?如何在過濾時排除類隱藏行和禁用行

var $rows_ku = $('#ku_list tr'); 
 
$('#search_ku').keyup(function() { 
 
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); 
 

 
    $rows_ku.show().filter(function() { 
 
    var text = $(this).text().replace(/\s+/g, ' ').toLowerCase(); 
 
    return !~text.indexOf(val); 
 
    }).hide(); 
 
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.6/css/materialize.css" rel="stylesheet" /> 
 
<style> 
 
    .hidden { 
 
    visibility: hidden; 
 
    } 
 
</style> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="activeuserlist" class="col m12"> 
 
    <div class="card grey white"> 
 

 
    <div class="col s12 m2 l12 grey lighten-4 black-text"> 
 
     <div class="input-field col s10 "> 
 
     <i class="material-icons prefix astron-text">&#xe8b6;</i> 
 
     <input type="text" id="search_ku" placeholder="Filter"> 
 
     </div> 
 
    </div> 
 
    </div> 
 

 
</div> 
 

 
<div class="card-action"> 
 
    <table id="ku_list" class="bordered responsive-table"> 
 
    <thead> 
 
     <tr> 
 
     <td class="hidden">Entry</td> 
 
     <th data-field="id">Kullanıcı Adı</th> 
 
     <th data-field="id">IP adresi</th> 
 
     <th data-field="mac">Mac Adresi</th> 
 
     <th data-field="session">Bağlantı Başlangıç</th> 
 
     <th data-field="activity">Son İşlem Tarihi</th> 
 
     <th class="noprint" data-field='action'>Hareket</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr> 
 
     <td class="hidden">3b5970d4fa815391</td> <!-- DONT WANNA SEE IN RESULT --> 
 
     <td>[email protected]</td> 
 
     <td>192.168.26.101</td> 
 
     <td>4c:7c:5f:04:6c:16</td> 
 
     <td>2016-05-12 09:47:55</td> 
 
     <td>2016-05-12 14:33:07</td> 
 
     <td class="noprint"><a href="#modalkes" onclick="SetId('3b5970d4fa815391');" class="btn-floating red modal-trigger"><i class="material-icons">&#xe047;</i></a> 
 
     </td> <!-- DONT WANNA SEE IN RESULT --> 
 
     </tr> 
 
     <tr> 
 
     <td class="hidden">3dd66a5ec453e31d</td> <!-- DONT WANNA SEE IN RESULT --> 
 
     <td>[email protected]</td> 
 
     <td>192.168.26.214</td> 
 
     <td>34:51:c9:bc:f0:1e</td> 
 
     <td>2016-05-12 10:12:02</td> 
 
     <td>2016-05-12 17:32:30</td> 
 
     <td class="noprint"><a href="#modalkes" onclick="SetId('3dd66a5ec453e31d');" class="btn-floating red modal-trigger"><i class="material-icons">&#xe047;</i></a> 
 
     </td> <!-- DONT WANNA SEE IN RESULT --> 
 
     </tr> 
 
     <tr> 
 
     <td class="hidden">108587eeb185d040</td> <!-- DONT WANNA SEE IN RESULT --> 
 
     <td>[email protected]</td> 
 
     <td>192.168.26.51</td> 
 
     <td>90:fd:61:49:89:bc</td> 
 
     <td>2016-05-12 10:22:52</td> 
 
     <td>2016-05-12 17:31:50</td> 
 
     <td class="noprint"><a href="#modalkes" onclick="SetId('108587eeb185d040');" class="btn-floating red modal-trigger"><i class="material-icons">&#xe047;</i></a> 
 
     </td> <!-- DONT WANNA SEE IN RESULT --> 
 
     </tr> 
 
    </tbody> 
 
    </table>

回答

1

嘗試這種情況:

在這種情況下報頭(即:THEAD)含量始終顯示。

var $rows_ku = $('#ku_list tbody tr'); 
    $('#search_ku').keyup(function() { 
     var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); 

     $rows_ku.show().filter(function() { 
      var text = $(this).find('td:not(.hidden,.noprint)').text().replace(/\s+/g, ' ').toLowerCase(); 
      return !~text.indexOf(val); 
    }).hide();}); 

選擇器TD:否(.hidden,.noprint)排除隱藏和NOPRINT類。

+0

感謝您的回答,但是,當我搜索時仍然可以看到包含noprint或隱藏元素的行 – TFC

+0

我已將工作代碼放在jsfiddle上請參考鏈接: https://jsfiddle.net/Saravanakumar/qa2zeo7o/ – saravanakumar

+0

上面的小提琴像往常一樣工作,除了隱藏和noprint類元素中的搜索字符串之外,您的上一個代碼。 或者當搜索字符串出現在那一行時,你想隱藏'hidden和noprint'類元素嗎? – saravanakumar

相關問題