我想阻止当用户点击 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();
}
}
}
});
但是从不调用此处理程序。
答案 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事件处理程序)