我对 GWT SuggestBox 小部件有疑问。
我在表单的每个字段上都有一个处理程序,可以使用回车键提交它。 不过我也想用回车键填充建议框。
因此我试图找到一种合适的方法: 1.当我在建议框中选择一个项目(显示建议菜单)并按 Enter 键时,选择该项目 2.当建议菜单不显示验证表单时
任何想法
最佳答案
当您查看 SuggestBox
构造函数时,您会发现 this :
public SuggestBox(SuggestOracle oracle,
ValueBoxBase<java.lang.String> box,
SuggestBox.SuggestionDisplay suggestDisplay)
oracle - supplies suggestions based upon the current contents of the text widget
box - the text widget
suggestDisplay - the class used to display suggestions
SuggestionDisplay
是您需要检查 isSuggestionListShowing()
的内容。
示例代码:
@UiField
FormPanel uiFormPanel;
@UiField
TextBox uiTextBox;
@UiField(provided = true)
SuggestBox uiSuggestBox;
public SubmitTest() {
// provided fields
MultiWordSuggestOracle oracle = new MultiWordSuggestOracle();
oracle.add("Cat");
oracle.add("Dog");
oracle.add("Horse");
oracle.add("Canary");
TextBox box = new TextBox();
final DefaultSuggestionDisplay suggestDisplay = new DefaultSuggestionDisplay();
uiSuggestBox = new SuggestBox(oracle, box, suggestDisplay);
initWidget(uiBinder.createAndBindUi(this));
uiFormPanel.addSubmitHandler(new SubmitHandler() {
@Override
public void onSubmit(SubmitEvent event) {
event.cancel();
Window.alert("Submit!");
}
});
uiTextBox.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
uiFormPanel.submit();
}
});
uiSuggestBox.addKeyDownHandler(new KeyDownHandler() {
@Override
public void onKeyDown(KeyDownEvent event) {
if(event.getNativeKeyCode() == KeyCodes.KEY_ENTER)
if(!suggestDisplay.isSuggestionListShowing())
uiFormPanel.submit();
}
});
}
UiBinder:
<g:FormPanel ui:field="uiFormPanel">
<g:HTMLPanel>
<g:TextBox ui:field="uiTextBox" />
<g:SuggestBox ui:field="uiSuggestBox" />
</g:HTMLPanel>
</g:FormPanel>
关于java - 表单验证和 SuggestBox 选择之间的 GWT 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201734/