2017-05-26 45 views
1

我有GWT SuggestBox小部件的問題。表單驗證和SuggestBox選擇之間的GWT衝突

我在窗體的每個字段上都有一個處理程序,用enter鍵提交它。 但是,我想用enter鍵填充提示框。

因此,我試圖找到一個妥善的辦法:1。 當我選擇在項目建議箱(如圖建議菜單),然後按回車,選擇此項 2時,建議菜單不顯示驗證形式

任何想法

回答

1

當你看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> 
+0

運作良好,謝謝。只是一件事情:在SuggestionDisplay接口中不推薦使用isSuggestionListShowing()。必須轉換爲默認實現: ((DefaultSuggestionDisplay)entitySuggestBox.getSuggestionDisplay())。isSuggestionListShowing() – Biologeek