0

我想知道是否有任何方法可以通过按 TAB 键本机实现的相同方式按 Enter 键来导航对话框组件?

4

2 回答 2

0

tab 键是做改变焦点工作的浏览器——不需要添加任何特别的东西,你会发现 tab 可以在互联网上的任何形式上工作(除非由于某种原因被明确禁用......)。

要使用 enter 键移动焦点,您必须监听 onkeydown 事件(通过 tab 改变焦点也会发生 onkeydown,因此选择此键以保持一致性),检查它是否是 enter 键,如果是,则将焦点移动到下一个元素名单。

典型的选项卡焦点行为涉及浏览器检查页面上元素的 tabIndex,并查找页面上具有更高 tabIndex 的下一个元素,或最近的后续兄弟/表亲元素。我没有一种方法可以轻松实现这一点,因此我将专注于转到下一个小部件。

GXT 3 的 FormPanelHelper 有一些方便的方法来查找所有字段 - 此代码也可以用作非 GXT 字段的基础。跟踪对话框中找到的字段中的所有 FocusEvent 和 BlurEvent,并使用它来始终跟踪当前聚焦的字段。向对话框本身添加一个键处理程序,以捕获所有键事件,并检查一个是否是回车键。如果是这样,从当前聚焦的字段中找出下一个字段是什么,并在其上调用 .focus() - 这将触发上述焦点处理程序,因此您的簿记将被正确更新。

正如@eliran-m 所指出的,考虑单独保留 Tab 键 - 不要妨碍用户按照他们习惯的方式导航。添加新功能可能是一件好事,但消除预期行为可能不是。

于 2012-07-31T15:41:11.730 回答
0

虽然我没有通过处理 keyDown 和 keyUp 事件来尝试过,但它似乎是可行的。尽管您可能无法以这种方式拦截浏览器生成的对话框以及使用 Window.alert() 创建的其他对话框。你是如何创建对话框的?

于 2012-07-30T16:21:51.293 回答