首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GWT中停止事件冒泡

在GWT中停止事件冒泡
EN

Stack Overflow用户
提问于 2008-10-18 00:27:13
回答 4查看 11.1K关注 0票数 5

我有以下代码片段,changeTextArea是一个TextArea对象。

代码语言:javascript
复制
changeTextArea.addKeyboardListener(new KeyboardListenerAdapter()
  public void onKeyPress( Widget sender, char keyCode, int modifier){
    //do something
    //I WISH TO STOP THE EVENT THAT MAPS TO THIS KEYPRESS FROM BUBBLING ANY FURTHER
  }
}

我该如何阻止导致此方法被调用的事件从changeTextArea冒泡到包含changeTextArea的面板/小部件/组合/中。简而言之,我如何阻止它进一步冒泡。任何帮助都将不胜感激(尤其是代码示例)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-18 05:29:21

据我所知,您不能通过键盘侦听器做到这一点,但可以使用DOM类添加事件预览:

代码语言:javascript
复制
DOM.addEventPreview(EventPreview preview) 

然后,当您获得事件时:

代码语言:javascript
复制
onEventPreview(Event event) 

您应该返回false,表示您想要取消事件。Event对象也支持此方法:

代码语言:javascript
复制
public final void cancelBubble(boolean cancel)

取消给定事件的冒泡。这将停止将事件传播到父元素。

你可以在这里找到更多细节:http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/index.html?overview-summary.html

票数 6
EN

Stack Overflow用户

发布于 2008-10-20 16:59:53

您绝对可以在任何可以访问事件的代码中使用事件的cancelBubble()和preventDefault()方法。没有必要有一个事件预览...

票数 4
EN

Stack Overflow用户

发布于 2010-12-22 09:11:07

您可以调用发送方的cancelKey()事件。这里有一个例子,它只允许输入数字,所有其他键都会被拒绝。

私有类RowColChangeHandler实现了KeyPressHandler {

代码语言:javascript
复制
    public void onKeyPress(KeyPressEvent event) {
        char keyCode = event.getCharCode();
        if(keyCode <48 || keyCode >57)
        {
            ((TextArea)event.getSource()).cancelKey();
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/214262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档