2

我有一个文本小部件,我想让输入事件表现得像一个选项卡事件。所以我捕获了按键事件并引发了一个选项卡原生事件。

但是,选项卡行为不会反映在应用程序中。事件处理程序的代码是

   public void onKeyPress(KeyPressEvent event) { 
            int keyCode = event.getNativeEvent().getKeyCode(); 
            if (keyCode == KeyCodes.KEY_ENTER) { 
               NativeEvent nativeEvent = 
               Document.get().
                 createKeyPressEvent(false,false,false,false,KeyCodes.KEY_TAB ); 
               DomEvent.fireNativeEvent(nativeEvent, this, this.getElement()); 
            } 

当我使用已弃用的 createKeyPressEvent 和更多参数时,它会触发选项卡事件,但行为与选项卡按键不同,即移动到下一个小部件。新代码从上面的 createKeyPress 事件行中的代码更改如下

     NativeEvent nativeEvent = 
       Document.get().
         createKeyPressEvent(false,false,false,false,
                      KeyCodes.KEY_TAB ,KeyCodes.KEY_TAB);
4

1 回答 1

1

请注意,手动触发事件不会生成与该事件关联的默认操作。例如,手动触发焦点事件不会导致元素接收焦点(您必须使用它的焦点方法),手动触发提交事件不会提交表单(使用提交方法),手动触发键事件会不会导致该字母出现在焦点文本输入中,并且在链接上手动触发点击事件不会导致链接被激活等。在 UI 事件的情况下,出于安全原因,这很重要,因为它会阻止脚本通过模拟与浏览器本身交互的用户操作。

来自http://www.howtocreate.co.uk/tutorials/javascript/domevents

于 2010-10-26T22:07:17.360 回答