自訂多重條件
此範例展示如何利用 searchBuilder.conditions
來新增自訂條件或覆寫現有條件。searchBuilder.conditions
選項包含 7 個屬性,每個屬性對應 DataTables 可以偵測到的一種類型。
字串
日期
數字
數字格式
HTML
HTML 數字
HTML 數字格式
此外,SearchBuilder 有自己的 moment
屬性,當欄位使用 Moment.js 時會使用該屬性。SearchBuilder 會自動偵測並處理任何 moment 格式的資料(請參閱 此處 的範例)。SearchBuilder 也與 Luxon 整合,如同與 moment 整合一樣良好(請參閱 此處 的範例)
在此範例中,searchBuilder.conditions.num
用於為任何類型為數字的欄位建立新的 Multiple Of
條件,這將建立一個輸入元素,該元素將接收一個數字。然後,搜尋結果應傳回該數字的倍數的任何年齡。若要新增自訂條件,您應將條件物件的鍵設定為尚未使用的鍵。
請注意,此條件不會新增至薪資欄位,因為它是一個格式化的 num-fmt
類型數字。如需欄位類型的詳細資訊,請查看 columns.type
選項。
SearchBuilder.Condition
資料類型詳細說明了要新增到 SearchBuilder 的自訂條件的要求。
關於如何設定自訂條件的詳細說明,請參閱 此文件頁面。
姓名 | 職位 | 辦公室 | 年齡 | 開始日期 | 薪資 |
---|---|---|---|---|---|
Tiger Nixon | 系統架構師 | 愛丁堡 | 61 | 2011-04-25 | $320,800 |
Garrett Winters | 會計 | 東京 | 63 | 2011-07-25 | $170,750 |
Ashton Cox | 初級技術作者 | 舊金山 | 66 | 2009-01-12 | $86,000 |
Cedric Kelly | 資深 Javascript 開發人員 | 愛丁堡 | 22 | 2012-03-29 | $433,060 |
Airi Satou | 會計 | 東京 | 33 | 2008-11-28 | $162,700 |
Brielle Williamson | 整合專員 | 紐約 | 61 | 2012-12-02 | $372,000 |
Herrod Chandler | 銷售助理 | 舊金山 | 59 | 2012-08-06 | $137,500 |
Rhona Davidson | 整合專員 | 東京 | 55 | 2010-10-14 | $327,900 |
Colleen Hurst | Javascript 開發人員 | 舊金山 | 39 | 2009-09-15 | $205,500 |
Sonya Frost | 軟體工程師 | 愛丁堡 | 23 | 2008-12-13 | $103,600 |
Jena Gaines | 辦公室經理 | 倫敦 | 30 | 2008-12-19 | $90,560 |
Quinn Flynn | 支援主管 | 愛丁堡 | 22 | 2013-03-03 | $342,000 |
Charde Marshall | 區域總監 | 舊金山 | 36 | 2008-10-16 | $470,600 |
Haley Kennedy | 資深行銷設計師 | 倫敦 | 43 | 2012-12-18 | $313,500 |
Tatyana Fitzpatrick | 區域總監 | 倫敦 | 19 | 2010-03-17 | $385,750 |
Michael Silva | 行銷設計師 | 倫敦 | 66 | 2012-11-27 | $198,500 |
Paul Byrd | 財務長 (CFO) | 紐約 | 64 | 2010-06-09 | $725,000 |
Gloria Little | 系統管理員 | 紐約 | 59 | 2009-04-10 | $237,500 |
Bradley Greer | 軟體工程師 | 倫敦 | 41 | 2012-10-13 | $132,000 |
Dai Rios | 人事主管 | 愛丁堡 | 35 | 2012-09-26 | $217,500 |
Jenette Caldwell | 開發主管 | 紐約 | 30 | 2011-09-03 | $345,000 |
Yuri Berry | 行銷長 (CMO) | 紐約 | 40 | 2009-06-25 | $675,000 |
Caesar Vance | 售前支援 | 紐約 | 21 | 2011-12-12 | $106,450 |
Doris Wilder | 銷售助理 | 雪梨 | 23 | 2010-09-20 | $85,600 |
Angelica Ramos | 執行長 (CEO) | 倫敦 | 47 | 2009-10-09 | $1,200,000 |
Gavin Joyce | 開發人員 | 愛丁堡 | 42 | 2010-12-22 | $92,575 |
Jennifer Chang | 區域總監 | 新加坡 | 28 | 2010-11-14 | $357,650 |
Brenden Wagner | 軟體工程師 | 舊金山 | 28 | 2011-06-07 | $206,850 |
Fiona Green | 營運長 (COO) | 舊金山 | 48 | 2010-03-11 | $850,000 |
Shou Itou | 區域行銷 | 東京 | 20 | 2011-08-14 | $163,000 |
Michelle House | 整合專員 | 雪梨 | 37 | 2011-06-02 | $95,400 |
Suki Burks | 開發人員 | 倫敦 | 53 | 2009-10-22 | $114,500 |
Prescott Bartlett | 技術作者 | 倫敦 | 27 | 2011-05-07 | $145,000 |
Gavin Cortez | 團隊領導 | 舊金山 | 22 | 2008-10-26 | $235,500 |
Martena Mccray | 售後支援 | 愛丁堡 | 46 | 2011-03-09 | $324,050 |
Unity Butler | 行銷設計師 | 舊金山 | 47 | 2009-12-09 | $85,675 |
Howard Hatfield | 辦公室經理 | 舊金山 | 51 | 2008-12-16 | $164,500 |
Hope Fuentes | 秘書 | 舊金山 | 41 | 2010-02-12 | $109,850 |
Vivian Harrell | 財務主管 | 舊金山 | 62 | 2009-02-14 | $452,500 |
Timothy Mooney | 辦公室經理 | 倫敦 | 37 | 2008-12-11 | $136,200 |
Jackson Bradshaw | 總監 | 紐約 | 65 | 2008-09-26 | $645,750 |
Olivia Liang | 支援工程師 | 新加坡 | 64 | 2011-02-03 | $234,500 |
Bruno Nash | 軟體工程師 | 倫敦 | 38 | 2011-05-03 | $163,500 |
Sakura Yamamoto | 支援工程師 | 東京 | 37 | 2009-08-19 | $139,575 |
Thor Walton | 開發人員 | 紐約 | 61 | 2013-08-11 | $98,540 |
Finn Camacho | 支援工程師 | 舊金山 | 47 | 2009-07-07 | $87,500 |
Serge Baldwin | 資料協調員 | 新加坡 | 64 | 2012-04-09 | $138,575 |
Zenaida Frank | 軟體工程師 | 紐約 | 63 | 2010-01-04 | $125,250 |
Zorita Serrano | 軟體工程師 | 舊金山 | 56 | 2012-06-01 | $115,000 |
Jennifer Acosta | 初級 Javascript 開發人員 | 愛丁堡 | 43 | 2013-02-01 | $75,650 |
Cara Stevens | 銷售助理 | 紐約 | 46 | 2011-12-06 | $145,600 |
Hermione Butler | 區域總監 | 倫敦 | 47 | 2011-03-21 | $356,250 |
Lael Greer | 系統管理員 | 倫敦 | 21 | 2009-02-27 | $103,500 |
Jonas Alexander | 開發人員 | 舊金山 | 30 | 2010-07-14 | $86,500 |
Shad Decker | 區域總監 | 愛丁堡 | 51 | 2008-11-13 | $183,000 |
Michael Bruce | Javascript 開發人員 | 新加坡 | 29 | 2011-06-27 | $183,000 |
Donna Snider | 客戶支援 | 紐約 | 27 | 2011-01-25 | $112,000 |
姓名 | 職位 | 辦公室 | 年齡 | 開始日期 | 薪資 |
- Javascript
- HTML
- CSS
- Ajax
- 伺服器端指令碼
- 註解
以下顯示的 Javascript 用於初始化此範例中顯示的表格
$('#example').DataTable({ layout: { top1: { searchBuilder: { conditions: { num: { MultipleOf: { conditionName: 'Multiple Of', // 將顯示在條件選取元素中的字串值 init: function (that, fn, preDefined = null) { // 宣告輸入元素並設定接聽程式以觸發搜尋 var el = $('<input/>').on('input', function () { fn(that, this); }); // 新增機制來套用可能傳入的 preDefined 值 if (preDefined !== null) { $(el).val(preDefined[0]); } return el; }, inputValue: function (el) { // 傳回輸入元素中的值 return $(el[0]).val(); }, isInputValid: function (el, that) { // 如果輸入元素中有文字,則其適用於搜尋 return $(el[0]).val().length !== 0; }, search: function (value, comparison) { // 使用模數 (%) 運算子檢查是否沒有餘數 return value % comparison === 0; } } } } } } } });
new DataTable('#example', { layout: { top1: { searchBuilder: { conditions: { num: { MultipleOf: { conditionName: 'Multiple Of', // 將顯示在條件選取元素中的字串值 init: function (that, fn, preDefined = null) { // 宣告輸入元素並設定接聽程式以觸發搜尋 var el = document.createElement('input'); el.addEventListener('input', function () { fn(that, this); }); // 新增機制來套用可能傳入的 preDefined 值 if (preDefined !== null) { el.value = preDefined[0]; } return el; }, inputValue: function (el) { // 傳回輸入元素中的值 return el[0].value; }, isInputValid: function (el, that) { // 如果輸入元素中有文字,則其適用於搜尋 return el[0].value.length !== 0; }, search: function (value, comparison) { // 使用模數 (%) 運算子檢查是否沒有餘數 return value % comparison === 0; } } } } } } } });
除了以上程式碼之外,還載入以下 Javascript 函式庫檔案以在此範例中使用
以下顯示的 HTML 是原始 HTML 表格元素,在 DataTables 增強之前
此範例使用從函式庫檔案載入的額外 CSS(如下所示)以外的額外 CSS,以便正確顯示表格。使用的額外 CSS 如下所示
為了提供表格樣式,在此範例中載入以下 CSS 函式庫檔案
此表格透過 Ajax 載入資料。以下顯示已載入的最新資料。此資料將隨著載入任何其他資料而自動更新。
以下顯示用於執行此表格伺服器端處理的指令碼。請注意,這只是一個使用 PHP 的範例指令碼。伺服器端處理指令碼可以使用任何語言編寫,並使用 DataTables 文件中描述的協定。