2012-02-16 9 views
6

मैं जीडब्ल्यूटी में <g:SuggestBox> तत्व के अंदर प्लेसहोल्डर विशेषता निर्दिष्ट करने का एक तरीका ढूंढ रहा हूं। मुझे पता है कि <input> तत्व उस विशेषता को निर्दिष्ट करने की अनुमति देता है, लेकिन मैंने इनपुट के बजाय SuggestBox तत्व पर स्विच करने का निर्णय लिया।प्लेडहोल्डर विशेषता के साथ जीडब्ल्यूटी सुझावबॉक्स

क्या कोई मेरी मदद कर सकता है?

+0

आप किसी भी अतिरिक्त गुणों अनुकूल परिभाषित कर सकते हैं [यह समाधान] (http://stackoverflow.com/questions/10450987/how-to-add-a-placeholder-to-a-gwt-text-input-field/38316205#38316205)। –

उत्तर

8

आपको अपना खुद का कस्टम सुझाव बॉक्स बनाना चाहिए, उसके बाद आप प्लेसहोल्डर विशेषता को सेट कर सकते हैं। उदाहरण के लिए:

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); 
    } 
} 

तो, आप इस संपत्ति को यूआई बाइंडर में सेट कर सकते हैं।

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

पीएस: यह केवल आधुनिक ब्राउज़र में काम करता है।

/** 
* 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> 
*/ 

उस मामले में आप SuggestBox(SuggestOracle oracle, TextBoxBase box) निर्माता को यह TextBoxWithPlaceholder के उदाहरण भेज सकते हैं: पुराने ब्राउज़र के लिए सही ढंग से लागू करने के साथ-साथ wogwt lib तीसरे पक्ष के बाहर की जाँच के लिए, यह TextBoxWithPlaceholder वर्ग जो पाठ बॉक्स फैली है।

+0

मुझे यकीन नहीं है कि यह कोड GetTextBox() प्राप्त करें। GetElement()। GetStyle()। SetProperty ("प्लेसहोल्डर", placeHolderText); सही है। मुझे लगता है कि इसे नीचे वर्णित किया जाना चाहिए। – user1545858

9

SuggestBox उप-वर्गीकरण निश्चित रूप से काम करेगा।
क्या आप भी आसानी से विशेषता सीधे सेट करके एक मौजूदा SuggestBox लिए प्लेसहोल्डर जोड़ सकते हैं एक अतिरिक्त वर्ग बनाने के लिए नहीं करना चाहते हैं:

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

ध्यान दें कि आप एक अपवाद मिल जाएगा अगर आप getElement() विधि कॉल विजेट को डीओएम में जोड़ा जाने से पहले। तो अगर आप एक समाधान है कि इससे पहले कि यह डोम रख दिया जाता है आप प्लेसहोल्डर पाठ सेट कर सकते हैं चाहते हैं, और यह जाहिर होता है एक बार यह जोड़ा है, तो आप में 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); 
     } 
    } 
}); 
संबंधित मुद्दे