{hero}

columns().search()

自 DataTables 1.10 版本起新增

在選定的欄位中搜尋資料。

描述

雖然 search() 提供了在整個表格中進行全域搜尋的功能,但這個方法及其單數對應方法,提供了在特定欄位上搜尋資料的功能。

DataTables 沒有內建任何欄位搜尋控制項,因為欄位特定資料的搜尋方式太多種,但是這個方法讓新增自訂欄位搜尋控制項變得超級容易。下面的範例展示了它可能的使用方式。

DataTables 有一個內建的搜尋演算法,稱為「智慧」搜尋,其設計目的是讓終端使用者能夠輕鬆搜尋表格資料。智慧搜尋是使用正規表示式執行的,因此如果您使用正規表示式搜尋(此方法的第二個參數),則必須考慮這一點。有關 DataTables 中智慧搜尋的完整描述,請參閱 search() 的文件。

請注意,DataTables 中的搜尋功能實際上在技術上是一種篩選,因為它是減法的。但是,我們將其稱為搜尋,以避免與 filter() 輔助方法產生名稱重疊。

請注意,此方法設定搜尋僅套用至表格 - 它實際上不會執行搜尋。為了執行搜尋並顯示結果,請使用 draw() 方法,它可以簡單地作為 columns().search() 方法傳回的物件的鏈式方法呼叫 - 例如 table.columns( [0, 1] ).search( 'Fred' ).draw();。這是為了在執行繪製之前能夠排隊多個變更。

類型

function columns().search()

描述

取得目前套用的欄位搜尋。

傳回

具有結果集中所選欄位的已套用搜尋詞彙的 API 實例。

function column().search( input [, options] )

描述

設定要用於所選欄位的搜尋詞彙,以及設定選項。設定好搜尋詞彙後,呼叫 draw() 以更新表格的視圖。

參數
傳回

DataTables API 實例

function columns().search( input [, regex[ , smart[ , caseInsen ]]] )

描述

從選取器設定欄位的搜尋詞彙。請注意,這實際上並不會執行搜尋,而是將其排入佇列 - 使用 draw() 來執行搜尋並顯示結果。

參數
傳回

DataTables API 實例

範例

對多個欄位套用搜尋

var table = new DataTable('#myTable');

table
	.columns('.status')
	.search('Important')
	.draw();

為每個欄位建立一個文字 input 搜尋。請注意,此範例會執行部分單字匹配和智慧搜尋。

// Setup - add a text input to each footer cell
$('#example tfoot th').each(function () {
	var title = $('#example thead th')
		.eq($(this).index())
		.text();
	$(this).html('<input type="text" placeholder="Search ' + title + '" />');
});

// DataTable
var table = new DataTable('#myTable');

// Apply the filter
table.columns().every(function () {
	var column = this;

	$('input', this.footer()).on('keyup change', function () {
		column.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>'));
		});
});

相關內容

以下選項直接相關,也可能在您的應用程式開發中很有用。