2010-05-20 59 views
6

Cần lọc bảng từ bên ngoài bảng, với tìm kiếm văn bản, hộp kiểm và chọn. PicNet Table Filter cho jQuery hoạt động cho cả việc tìm kiếm và sử dụng hộp kiểm bên ngoài bảng ... mặc dù tôi không thể tìm thấy bất kỳ ví dụ nào về cách chọn hộp chọn để hoạt động. Có ai biết không?Bộ lọc bảng jQuery có văn bản, hộp kiểm, chọn

** Tôi có thể quá cụ thể ở đây, nhưng tôi nghĩ ít nhất tôi cũng nên hỏi. *

Tôi cũng mở cửa cho các khả năng khác ngoài PicNet.

CẬP NHẬT: Đây là mã của tôi cho đến giờ, tôi muốn một tùy chọn chọn ở đầu phần thân của hai hộp kiểm có/không.

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>PicNet Table Filter Demo</title> 
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>     
<script type="text/javascript" src="picnet.table.filter.min.js"></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     // Randomly Create Data Rows 


     // Initialise Plugin 
     var options1 = { 
      additionalFilterTriggers: [$('#onlyyes'), $('#onlyno'), $('#itemone'), $('#quickfind')], 
      clearFiltersControls: [$('#cleanfilters')], 
      matchingRow: function(state, tr, textTokens) { 
       if (!state || !state.id) { return true; }     
       var val = tr.children('td:eq(2)').text(); 
       var val2 = tr.children('td:eq(3)').text(); 
       switch (state.id) { 
        case 'onlyyes': return state.value !== 'true' || val === 'yes'; 
        case 'onlyno': return state.value !== 'true' || val === 'no'; 
        case 'itemone': return state.value !== 'true' || val2 === 'Item 1'; 
        default: return true; 
       } 
      } 
     }; 

     $('#demotable1').tableFilter(options1); 


    }); 
</script> 
<style> 
* { font-family:arial; font-size:8pt;} 
table, td, th { border: solid 1px silver; color:#666; padding:3px 5px 3px 5px} 
th { background-color:#333; color:#fff; font-size:0.85em } 
a { color:gray; } 
.filtering { background-color:light-gray} 
#jqtf_filters { 
list-style:none; 

} 
#jqtf_filters li { 
display:inline-block; 
position:relative; 
float:left; 
margin-bottom:20px 
    } 
    .hidden, tr.filters { display: none;} 

    </style> 
    </head> 
    <body>  
<b>Additional Filters for Table 1</b><br/> 
    Only Show Yes: <input type="checkbox" id="onlyyes"/>   
Only Show No: <input type="checkbox" id="onlyno"/> 
Only Show Item 1: <input type="checkbox" id="itemone"/> 
<br/>  
Quick Find: <input type="text" id="quickfind"/> 
<br/> 
<a id="cleanfilters" href="#">Clear Filters</a> 
<br/><b>Table 1</b><br/> 
    <table id='demotable1'> 
    <thead> 
     <tr><th>Text Column 1</th><th>Number Column</th><th>Yes/No Column</th><th filter-type='ddl'>List Column</th><th style='width:100px;' filter='false'>No Filter</th><th>Date Column</th><th filter='false'>Empty</th><th class="hidden" filter='false'></th></tr> 
     </thead> 
     <tbody> 
     <tr> 
      <td>Value 102</td> 
      <td>420</td> 
      <td>yes</td> 
      <td>Item 1</td> 
      <td>hello</td> 
      <td>01/11//2009</td>     
      <td></td> 
      <td class="hidden">Ed Head</td> 
     </tr> 
     <tr> 
      <td>Value 134</td> 
      <td>987</td> 
      <td>no</td> 
      <td>Item 2</td> 
      <td>hi</td> 
      <td>03/11//2009</td>     
      <td></td> 
      <td class="hidden">Joe Blow</td> 
     </tr> 
     <tr> 
      <td>Value 654</td> 
      <td>722</td> 
      <td>yes</td> 
      <td>Item 3</td> 
      <td>hello</td> 
      <td>04/11//2009</td>     
      <td></td> 
      <td class="hidden">Jimmy</td> 
     </tr> 
    </tbody> 
    </table> 

    </body> 
    </html> 
+1

+1 cho liên kết để các plugin tốt đẹp. –

Trả lời

-2

Tôi không biết bạn đang cố làm gì ("Cần lọc bảng từ bên ngoài bảng" - wtf có nghĩa là gì?). Nhưng nếu bạn đang cố gắng lấy giá trị của một hộp chọn bằng cách sử dụng jQuery:

$('#yourSelectList').val() // Option value 
$('#yourSelectList :selected').text() // Option text value 
+0

Nếu bạn nhìn vào plugin bộ lọc bảng PicNet, chúng có hai tùy chọn, lọc từ bên trong bảng và từ bên ngoài bảng. Tôi đang cố gắng lọc một cột bằng cách sử dụng tùy chọn, bên ngoài bảng. – Jeffrey

2

Just made a small example for you to try out. Chỉ cần một bằng chứng nhanh về khái niệm.

<select id="filter"> 
    <option value="dogs">dogs</option> 
    <option value="cats">cats</option> 
</select> 

<table id="boing" border="1"> 
<tr> 
<th>header</th> 
</tr> 
<tr> 
<td>dogs</td> 
</tr> 
<tr> 
<td>dogs</td> 
</tr> 
    <tr> 
<td>cats</td> 
</tr> 
    <tr> 
<td>cats</td> 
</tr> 
    <tr> 
<td>dogs</td> 
</tr> 
</table> 

Và jQuery:

$("#filter").change(function(){ 
    $("#boing").find("td").each(function(){ 
     if($(this).text() != $("#filter").val()) $(this).hide(); 
     else $(this).show(); 
    }); 
});​ 

Nếu bạn muốn ẩn/hiển thị toàn bộ hàng, làm $(this).parent().hide()$(this).parent().show()

Một điều cần lưu ý là nếu bạn muốn làm một dropdown để kiểm tra tất cả các TD trong mỗi hàng, bạn sẽ phải tinh chỉnh mã để nó sẽ chỉ ẩn hàng nếu NONE của tds khớp với menu thả xuống. Một cái gì đó như this.

<select id="filter"> 
    <option value="dogs">dogs</option> 
    <option value="cats">cats</option> 
</select> 

<table id="boing" border="1"> 
<tr> 
<th>header</th> 
</tr> 
<tr> 
<td>dogs</td> 
<td>dogs</td> 
</tr> 
<tr> 
<td>dogs</td> 
<td>cats</td> 
</tr> 
    <tr> 
<td>cats</td> 
<td>dogs</td> 
</tr> 
    <tr> 
<td>cats</td> 
<td>cats</td> 
</tr> 
    <tr> 
<td>dogs</td> 
<td>cats</td> 
</tr> 
</table> 

Và jQuery:

$("#filter").change(function(){ 
    $("#boing").children('tbody').children('tr').not(':first').each(function(){ 
     var match = false; 
     $(this).children('td').each(function() { 
      if($(this).text() == $("#filter").val()) match = true; 
     }); 
     if(match) $(this).show(); 
     else $(this).hide(); 
    }); 
});​ 
+0

Tôi làm cách nào để ẩn toàn bộ hàng? http://jsfiddle.net/B7hMk/ – Jeffrey

+0

Bạn sẽ tinh chỉnh mã của mình như thế nào nếu bạn chiếm một hộp chọn cho mỗi cột? Bị kẹt ở đó! – Ismailp

+0

Lần đầu tiên cảm ơn bradley, @Jeffrey Tôi đã làm mẫu cho hàng ở đây: http://jsfiddle.net/BCreb/87/ - http://stackoverflow.com/questions/9878157/cant-get-tablesorter-checkbox -filtering-to-work/9882155 # 9882155 hy vọng nó giúp, cổ vũ –

Các vấn đề liên quan