2011-05-03 52 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并让它无所作为。

相关问题