2013-03-27 73 views
4

Example Fiddle我如何使用過濾表列或邏輯並列爲AND

我有一個HTML表:

_A_B_C_D_ 
|0|1|0|1| 
|0|1|0|0| 
|1|0|0|1| 

我要過濾非零列。使用jQuery數據表(而不是硬性要求,正是我目前使用的),我執行了以下過濾器:

// value is the column index, true simply informs the filter method to use regex 
dataTable.fnFilter("[^0]", value, true); 

然而,過濾多個列創建過濾器。因此:

dataTable.fnFilter("[^0]", 0 /*A*/, true); 
dataTable.fnFilter("[^0]", 3 /*D*/, true); 

將創建下列

_A_B_C_D_ 
|1|0|0|1| 

我需要OR行爲,雖然這將創建下表:

_A_B_C_D_ 
|0|1|0|1| 
|1|0|0|1| 

列A是非零列D不爲零。我想不出用我目前的結構來實現這一點。

如何使用OR邏輯將表格列過濾爲AND?

+0

的醫生說可以傳遞null作爲第二個參數來過濾所有列,我的天堂儘管如此,我還是試過了。 'dataTable.fnFilter(「[^ 0]」,null,true);'如果需要詳細說明哪些列是ORed,則不起作用。 – James 2013-03-27 16:00:46

+0

是的,我希望能找到一種方法來發送一個數組,而不是單個索引或全局。 – Joe 2013-03-27 16:09:41

+0

你也可以推出你自己的過濾功能:[link](http://www.datatables.net/plug-ins/filtering) – James 2013-03-27 16:14:55

回答

3

使用你的小提琴作爲模型我更新它來提供我相信你想要的功能。

我延長了數據表上的複選框的每次點擊過濾:

$.fn.dataTableExt.afnFiltering.push(
    function (settings, data, index) { 
     var s = [0, 3, 5]; // columns to filter 
     for (var i=0; i < s.length; i++) { 
      if (data[s[i]] != 0) return true; 
     } 
     return false; 
    } 
); 

完全融入小提琴:link

+0

這真的很酷。感謝你這麼好的想法! – veeTrain 2013-05-14 14:42:14