column().search()
在選定的欄位中搜尋資料。
描述
雖然 search()
提供了在整個表格中進行全域搜尋的功能,但此方法及其複數形式的方法,提供了在特定欄位中搜尋資料的功能。
DataTables 沒有內建任何欄位搜尋控制項,因為欄位特定資料的搜尋方式非常多樣,但此方法使新增自訂欄位搜尋控制項變得非常容易。下面的範例顯示了它可能的使用方式。
請注意,DataTables 中的此搜尋功能實際上在技術上是一種篩選,因為它是減法的。然而,我們將其稱為搜尋,以避免與 filter()
輔助方法產生命名重疊。
請注意,此方法僅設定要套用於表格的搜尋,而不會實際執行搜尋。為了執行搜尋並顯示結果,請使用 draw()
方法,它可以簡單地作為 column().search()
方法的傳回物件的鏈式方法調用,例如 table.column( 0 ).search( 'Fred' ).draw();
。這是為了在執行繪製之前能夠將多個變更排入佇列。
類型
function column().search( input [, options] )
- 描述
設定要用於選定欄位的搜尋詞,並帶有組態選項。設定搜尋詞後,調用
draw()
以更新表格的視圖。- 參數
名稱 類型 可選 1 input
否 要套用於欄位的搜尋。
從 DataTables 2 開始,此參數可以作為正規表示式或函式給定。
如果使用正規表示式,則給定的資料是相關欄位中儲存格的搜尋資料。
如果是函式,則會針對每一列呼叫該函式,並傳入四個參數:
- 欄位的搜尋字串
- 列的原始資料物件
- 列的資料索引
- 欄位的資料索引
應該傳回一個布林值:
true
表示保留該列,false
表示篩選掉該列。請注意,如果為此參數提供正規表示式或函式,則會忽略以下參數。
2 options
否 用於指定如何執行搜尋的組態選項。請參閱
DataTables.SearchOptions
以取得所有選項的說明。如果此處未提供選項,則將使用先前搜尋設定的值。- 傳回
DataTables API 實例
function column().search( input [, regex[ , smart[ , caseInsen ]]] )
- 描述
從選取器設定欄位的搜尋詞。請注意,從 DataTables 2 開始,優先使用上述簽名,因為它提供了其他選項。此簽名保留用於向後相容性。
- 參數
名稱 類型 可選 1 input
否 要套用的搜尋詞。有關詳細資訊,請參閱上述簽名描述中的
input
參數。2 regex
是 - 預設值:false 視為正規表示式(
true
)或不視為正規表示式(預設值,false
)。3 smart
是 - 預設值:true 執行智慧搜尋(預設值,
true
)或不執行智慧搜尋(false
)。請注意,要執行「智慧」搜尋,DataTables 會使用正規表示式,因此如果您將正規表示式作為此方法的第二個參數傳入,您可能需要停用智慧搜尋,以免兩個不同的正規表示式發生衝突。4 caseInsen
是 - 預設值:true 執行大小寫不敏感比對(預設值,
true
)或不執行大小寫不敏感比對(false
)。- 傳回
DataTables API 實例
範例
個別欄位搜尋
var table = new DataTable('#myTable');
// #column3_search is a <input type="text"> element
$('#column3_search').on('keyup', function () {
table
.columns(3)
.search(this.value)
.draw();
});
使用 select-filter
類別為每個欄位建立搜尋。
var table = new DataTable('#myTable');
table.columns('.select-filter').every(function () {
var that = this;
// Create the select list and search operation
var select = $('<select />')
.appendTo(this.footer())
.on('change', function () {
that.search($(this).val(), { exact: true }).draw();
});
// Get the search data for the first column and add to the select list
this.cache('search')
.sort()
.unique()
.each(function (d) {
select.append($('<option value="' + d + '">' + d + '</option>'));
});
});
具有函式的個別欄位搜尋
let table = new DataTable('#example');
// Find any row with data in column index 3 greater than 50
table
.column(3)
.search((d) => d > 50)
.draw();
相關
以下選項直接相關,在您的應用程式開發中也可能很有用。