Gwt 预防<;输入>;从SuggestBox冒出的气泡

Gwt 预防<;输入>;从SuggestBox冒出的气泡,gwt,event-handling,Gwt,Event Handling,我想防止当用户点击ENTER在SuggestBox中选择建议时,该关键事件冒泡 我将此代码放在包装组合中: Event.addNativePreviewHandler(new Event.NativePreviewHandler() { @Override public void onPreviewNativeEvent(NativePreviewEvent event) { if (event.getTypeInt() == E

我想防止当用户点击ENTER在SuggestBox中选择建议时,该关键事件冒泡

我将此代码放在包装
组合中

    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();
                }
            }
        }
    });

但是这个处理程序从未被调用。

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

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

这对我来说更有效:

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

此代码限制文本区域中按下“enter”键的操作(如果suggestBox与文本区域关联),即使建议列表未显示


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

为什么要这样做?GWT事件处理程序不受事件冒泡的影响。@GaneshKumar,因为有一个外部小部件可在输入时保存表单,当使用此小部件在表单中的SuggestBox中选择建议时会触发此小部件。您能提供完整的示例吗?您能解释区别吗?