2014-04-10 189 views
3

我正在使用jQuery數據表只是爲了顯示一些數據,但知道,我想過濾那些與多個複選框。
我的表包含這個頭:Host, Type, Record, Description, Free
而這些都是我的DataTable中的複選框:
類型MXACNAME
免費:在開始時01 所以,我想告訴所有的數據。如果某人現在選中複選框MX,則應該只顯示類型爲MX的數據。如果有人檢查MX,CNAME0,它應該只顯示這些過濾器的數據。你知道我的意思?
我有一個插件可以做到這一點,但複選框在列下,我的複選框在數據表外。jQuery DataTables:多重複選框過濾

有什麼想法?

+0

在我開始之前:你在使用服務器端處理嗎?如果沒有,你可以準備一個笨蛋嗎? – mainguy

+0

@mainguy不,我沒有使用服務器端處理。什麼是搶劫者? – Sylnois

回答

7

你應該使用這個功能:

function filterme() { 
    //build a regex filter string with an or(|) condition 
    var types = $('input:checkbox[name="type"]:checked').map(function() { 
    return '^' + this.value + '\$'; 
    }).get().join('|'); 
    //filter in column 0, with an regex, no smart filtering, no inputbox,not case sensitive 
    otable.fnFilter(types, 0, true, false, false, false); 

    //build a filter string with an or(|) condition 
    var frees = $('input:checkbox[name="free"]:checked').map(function() { 
    return this.value; 
    }).get().join('|'); 
    //now filter in column 2, with no regex, no smart filtering, no inputbox,not case sensitive 
    otable.fnFilter(frees, 2, false, false, false, false); 
} 

看看評論,看看它做什麼。

把它從你的HTML這樣的:

<input onchange="filterme()" type="checkbox" name="free" value="0">0 
    <input onchange="filterme()" type="checkbox" name="free" value="1">1 

Plunker是HTML和JS代碼片段一個測試平臺,極大地幫助別人來理解你的問題所在,並就如何解決的事情,快速響應。它只是像html/js/css編輯器一樣工作,可以在每個按鍵上呈現您的示例並且非常棒。

Click here to see how I fixed your issue with Plunker

在Plunker的左邊,你會發現我在這個過程中所使用的文件(index.html,然後的script.js)

雖然這個作品,應該給你如何的想法繼續,你應該考慮使用單選按鈕來實現免費的過濾器,因爲這樣做會更有意義。

由於這是一個安靜複雜的問題,如果需要更多的解釋,請回到我身邊。

+0

哇,即時無語..我需要嘗試在我的腳本。 – Sylnois

+0

我有免費問題。我在記錄中包含'0'或'1'的數據,所以他也顯示了它們。 – Sylnois

+0

你是什麼意思? 0和1由兩個輸入覆蓋。正如我所說,在這裏使用兩個有Free/Not Free的收音機或者返回Free True/Free Not True的單個複選框會更有意義。那是你要的嗎?在當前設置中,選中標記可以是0和1的值,當然這將返回所有記錄。 – mainguy