2011-05-03 40 views
4

我有一個CellTable,其中有一堆渲染爲<input>標籤的單元格。由於CellTable的花哨事件處理,輸入之間的選項卡被打破。看起來這個選項卡可以激發每個細胞到finishEditing,但是這反過來又成爲焦點,焦點永遠不會到達下一個<input>選項卡從輸入到CellTable中的輸入

在每個輸入上設置tabIndex似乎不會影響行爲。

如何恢復常用的tab鍵功能?

回答

8

我最近想通了。令人討厭的,但一旦你找到魔法就簡單了。

  1. 創建一個新的單元格類型以在您的表格中使用,因爲股票TextInputCell指定的標籤索引爲-1。基本上做TextInputCell所做的一切,但不要在你的模板中指定任何標籤索引。
  2. 禁用CellTable上的默認鍵盤導航。 cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED)

這應該會導致CellTable中的標籤導航正常。

+0

非常感謝這個答案。它對我來說非常合適。不得不修改標準組件絕不是使用框架的令人愉快的方式。谷歌,請改善這一個開箱即用的體驗! – 2011-12-06 21:15:09

0

如果您不更改單元格的值,Ben Imp的解決方案可以正常工作,但如果更改該值並嘗試使用標籤導航到下一個單元格,則會失去焦點並從視圖的第一個元素開始。我還沒有找到這種不適當的行爲的解決方案。

+0

我實現了這個[組件](https://gist.github.com/mammonmachine/7469434),當用戶專注於它時,它開始編輯,用戶可以按Tab鍵離開,可能會幫助你。 – 2013-11-14 16:11:23

2

如果您使用任何MVP框架,禁用KeyboardSelectionPolicy可能無法在所有視圖上工作。 GWT選擇單元格而不是單元格內的輸入字段。

下面是我在我的應用程序使用的解決方案:Adding TAB control to GWT CellTable

0

對於那些在未來的看着這個試圖找出如何讓同時改變值按Tab鍵,做了什麼奔小鬼則表明還你自定義組件刪除對super.finishEditing的引用。在某些情況下,這意味着壓倒finishEditing並讓它無所作爲。

相關問題