2012-02-16 23 views
6

Estoy buscando una forma de especificar el atributo marcador de posición dentro de un elemento <g:SuggestBox>, en GWT. Sé que el elemento <input> permite especificar ese atributo, pero decidí cambiar al elemento SuggestBox en lugar de a la entrada.GWT SuggestBox con marcador de posición atributo

¿Alguien me puede ayudar?

+0

Puede definir las propiedades adicionales adaptar [esta solución] (http://stackoverflow.com/questions/10450987/how-to-add-a-placeholder-to-a-gwt-text-input-field/38316205#38316205). –

Respuesta

8

Debe crear su propio widget SuggestBox personalizado, después de eso puede establecer un atributo de marcador de posición en él. Por ejemplo:

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

Por lo tanto, puede establecer esta propiedad en la carpeta UI.

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

PD: Funciona solo en el navegador moderno. Para implementar correctamente por los navegadores más antiguos, así echa un vistazo a terceros lib wogwt, tiene TextBoxWithPlaceholder clase que se extiende Cuadro de texto:

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

En ese caso se puede enviar esta TextBoxWithPlaceholder 's ejemplo a SuggestBox(SuggestOracle oracle, TextBoxBase box) constructor.

+0

No estoy seguro de que este código getTextBox(). GetElement(). GetStyle(). SetProperty ("placeholder", placeHolderText); es correcto. Creo que debería ser como se describe a continuación. – user1545858

9

Subclase de un SuggestBox definitivamente funcionaría.
Si no desea crear una clase adicional también se puede agregar fácilmente el marcador de posición a un SuggestBox existente estableciendo el atributo directa:

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

Tenga en cuenta que obtendrá una excepción si se llama al método getElement() antes de que el widget se agregue al DOM. Así que si quieres una solución que le permite establecer el texto del marcador antes de que éste se agrega a la DOM, y hacer que aparezca una vez que se ha añadido, se puede conectar a la 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); 
     } 
    } 
}); 
Cuestiones relacionadas