1

我想防止当用户按ENTER 键在 SuggestBox 中选择一个建议时,这个 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();
                }
            }
        }
    });

但是这个处理程序永远不会被调用。

4

3 回答 3

2

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

suggestBox.addKeyPressHandler(new KeyPressHandler() {
        @Override
        public void onKeyPress(KeyPressEvent event) {
            int key = event.getNativeEvent().getKeyCode();
            if (key == KeyCodes.KEY_ENTER) {
                event.stopPropagation();
            }
        }
});
于 2012-04-18T11:56:02.660 回答
1

这对我来说效果更好:

suggestBox.addKeyPressHandler(new KeyPressHandler() {
            @Override
            public void onKeyPress(KeyPressEvent event) {
                int key = event.getNativeEvent().getKeyCode();
                if (key == KeyCodes.KEY_ENTER) {
                    event.getNativeEvent().preventDefault();
                }
            }
        });
于 2012-08-15T09:28:26.023 回答
0

@珍,

即使未显示建议​​列表,此代码也会限制文本区域中“输入”键的操作(如果建议框与文本区域相关联)。

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

于 2015-08-05T09:06:31.037 回答