2012-02-16 7 views
6

GWTの<g:SuggestBox>要素内にプレースホルダ属性を指定する方法を探しています。 私は<input>要素がその属性を指定できることを知っていますが、私は入力の代わりにSuggestBox要素に切り替えることにしました。GWT SuggestBox with placeholder属性

誰でも手伝ってもらえますか?

+0

あなたは適応追加のプロパティを定義することができます[このソリューション](http://stackoverflow.com/questions/10450987/how-to-add-a-placeholder-to-a-gwt-text-input-field/38316205#38316205)。 –

答えて

8

カスタムのSuggestBoxウィジェットを作成してから、プレースホルダ属性を設定することができます。例:

public class CustomSuggestBox extends SuggestBox { 


private String placeHolderText = ""; 

    public String getPlaceHolderText() { 
    return placeHolderText; 
    } 

    public void setPlaceHolderText(String text) { 
    placeHolderText = text; 
    getTextBox().getElement().setAttribute("placeHolder", placeHolderText); 
    } 
} 

したがって、このプロパティはUIバインダーで設定できます。

<widgets:CustomSuggestBox ui:field="cSuggestBox" placeHolderText="someText" /> 

PS:現代のブラウザでのみ動作します。あなたはSuggestBox(SuggestOracle oracle, TextBoxBase box)コンストラクタにこのTextBoxWithPlaceholderのインスタンスを送信することができ、その場合には

/** 
* A text box that displays a placeholder string when empty 
* 
* <h3>CSS Style Rules</h3> 
* <ul class='css'> 
* <li>.wogwt-TextBoxWithPlaceholder { primary style }</li> 
* <li>.wogwt-TextBoxWithPlaceholder-placeholder { dependent style set when 
* the placeholder is displayed }</li> 
* </ul> 
*/ 

wogwt libにサードパーティのチェックアウトだけでなく、古いブラウザでは、それを正しく実装するためには、テキストボックスを拡張TextBoxWithPlaceholderクラスがあります。

+0

私はこのコードgetTextBox()。getElement()。getStyle()。setProperty( "placeholder"、placeHolderText);正しい。私は以下のようにすべきだと思います。 – user1545858

9

SuggestBoxをサブクラス化することは間違いなく機能します。
あなたはまた、簡単に直接属性を設定することにより、既存のSuggestBoxにプレースホルダを追加することができ、追加のクラスを作成したくない場合は:あなたはgetElement()メソッドを呼び出す場合は、例外が発生します

SuggestBox suggestBox = new SuggestBox(); 
suggestBox.getElement().setAttribute("placeHolder", "SOME TEXT); 
2

注意をウィジェットがDOMに追加される前にだから、あなたはそれがDOMに追加される前プレースホルダーテキストを設定し、それが追加されます一度それが現れる持つことができます解決をしたい場合、あなたはAttachEventにフックすることができます:

SuggestBox suggestBox = new SuggestBox(); 
// com.google.gwt.event.logical.shared.AttachEvent.Handler 
suggestBox.addAttachHandler(new Handler() { 
    @Override 
    public void onAttachOrDetach(AttachEvent event) { 
     if (event.isAttached()) { 
      suggestBox.getElement().setAttribute("placeHolder", "SOME TEXT); 
     } 
    } 
}); 
関連する問題