1
我有GWT SuggestBox小部件的問題。表單驗證和SuggestBox選擇之間的GWT衝突
我在窗體的每個字段上都有一個處理程序,用enter鍵提交它。 但是,我想用enter鍵填充提示框。
因此,我試圖找到一個妥善的辦法:1。 當我選擇在項目建議箱(如圖建議菜單),然後按回車,選擇此項 2時,建議菜單不顯示驗證形式
任何想法
我有GWT SuggestBox小部件的問題。表單驗證和SuggestBox選擇之間的GWT衝突
我在窗體的每個字段上都有一個處理程序,用enter鍵提交它。 但是,我想用enter鍵填充提示框。
因此,我試圖找到一個妥善的辦法:1。 當我選擇在項目建議箱(如圖建議菜單),然後按回車,選擇此項 2時,建議菜單不顯示驗證形式
任何想法
當你看SuggestBox
構造函數,你會發現this:
public SuggestBox(SuggestOracle oracle,
ValueBoxBase<java.lang.String> box,
SuggestBox.SuggestionDisplay suggestDisplay)
甲骨文 - 提供基於文本組件
框的當前內容的建議 - 文本組件
suggestDisplay - 用於顯示建議
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>
運作良好,謝謝。只是一件事情:在SuggestionDisplay接口中不推薦使用isSuggestionListShowing()。必須轉換爲默認實現: ((DefaultSuggestionDisplay)entitySuggestBox.getSuggestionDisplay())。isSuggestionListShowing() – Biologeek