我想防止当用户按 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();
}
}
}
});
但从不调用此处理程序。
我不知道为什么你的方法不起作用。但我有另一种方法。为建议框添加密钥事件侦听器。如果按下回车键,请取消事件的传播。
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();
}
}
});
@Jen,
此代码限制文本区域中"Enter"键的操作(如果 suggestBox 与文本区域关联),即使未显示建议列表也是如此。
当我的建议列表显示时,按"ENTER"键触发了事件处理程序addSelectionHandler(),我想停止传播(addKeyPressHandler事件处理程序不应该被触发)