API 整合
KeyTable 提供的主要介面是終端使用者簡單的儲存格焦點選項,但同樣重要的是它呈現給您的介面,也就是與它合作的開發人員!KeyTable 提供用於聚焦儲存格、獲取聚焦儲存格,以及當儲存格焦點變更時的事件的方法。
這是透過 DataTables API 完成的,KeyTable 會擴充此 API 以使這些操作成為可能。
聚焦儲存格檢索
KeyTable 使用 focused
選項擴充了 selector-modifier
選項,可用於告知儲存格選取器 API 方法,您是否要取得聚焦儲存格、未聚焦儲存格,或在選取儲存格時不考慮儲存格焦點。
DataTables 有兩種儲存格選取方法
由於在 KeyTable 控制的表格中只有單一儲存格可以具有焦點,因此 cell()
方法是主要與 KeyTable 一起使用的方法。
selector-modifier
會傳遞到方法中,並會影響儲存格選取器將會從中選擇的項目。例如,請考慮以下範例
var table = $('#myTable').DataTable();
table.cell( { focused: true } ).data();
上述程式碼會從目前具有焦點的儲存格取得資料。如果沒有儲存格具有焦點,則會傳回 undefined
。
如果我們想要取得沒有焦點的儲存格,我們可以透過以下方式使用
table.cells( { focused: false } ).data();
使用選取器修飾符來允許選取儲存格的這種方法,表示所有儲存格方法都可用於輕鬆地與聚焦儲存格搭配使用,例如 cell().node()
和 cell().invalidate()
以及其他方法。
焦點選取
除了能夠使用 DataTables API 檢索聚焦儲存格之外,也可以使用 API 來設定焦點和模糊現有的焦點。這是使用以下方法完成的
cell().focus()
- 取得焦點cell.blur()
- 模糊焦點
例如,要聚焦於具有特定 ID 的儲存格,我們可以如下使用
table.cell( '#row9-column12' ).focus();
事件
最後一塊拼圖是知道儲存格何時被聚焦。這是透過 KeyTable 發出的事件來完成的,尤其是 key-focus
、key-blur
和 key
事件。可以使用標準的 DataTables 事件模型來監聽這些事件。
例如,請考慮以下簡單案例,其中 key-focus
和 key-blur
事件是用於僅在頁面上的個別元素中顯示聚焦儲存格的資料
var output = $('#output');
var table = $('#myTable').DataTable( {
keys: true
} );
table
.on( 'key-focus', function () {
var data = table.cell( { focused: true } ).data();
output.html( data );
} )
.on( 'key-blur', function () {
output.html( 'No cell has focus' );
} );