防止<enter>从SuggestBox冒泡</enter>

时间:2012-04-17 23:08:46

标签: gwt event-handling

我想阻止当用户点击 ENTER 以在SuggestBox中选择Suggestion时,此Key事件正在冒泡。

我在包装Composite中有这段代码:

    Event.addNativePreviewHandler(new Event.NativePreviewHandler() {

        @Override
        public void onPreviewNativeEvent(NativePreviewEvent event) {
            if (event.getTypeInt() == Event.KEYEVENTS) {
                int key = event.getNativeEvent().getKeyCode();
                if (key == KeyCodes.KEY_ENTER) {
                    event.cancel();
                }
            }
        }
    });

但是从不调用此处理程序。

3 个答案:

答案 0 :(得分:2)

我不知道为什么你的方法不起作用。但我有另一种方法。为建议框添加一个关键事件监听器。如果按下回车键,则取消事件的传播。

suggestBox.addKeyPressHandler(new KeyPressHandler() {
        @Override
        public void onKeyPress(KeyPressEvent event) {
            int key = event.getNativeEvent().getKeyCode();
            if (key == KeyCodes.KEY_ENTER) {
                event.stopPropagation();
            }
        }
});

答案 1 :(得分:1)

这对我来说效果更好:

suggestBox.addKeyPressHandler(new KeyPressHandler() {
            @Override
            public void onKeyPress(KeyPressEvent event) {
                int key = event.getNativeEvent().getKeyCode();
                if (key == KeyCodes.KEY_ENTER) {
                    event.getNativeEvent().preventDefault();
                }
            }
        });

答案 2 :(得分:0)

@Jen,

此代码限制textarea中'enter'按键的操作(如果suggestBox与文本区域相关联),即使未显示建议​​列表也是如此。

显示我的建议列表时,按“ENTER”键会触发事件处理程序addSelectionHandler(),我想停止传播(不应触发addKeyPressHandler事件处理程序)