GWT SuggestBox с атрибутом-заполнителем - PullRequest
6 голосов
/ 16 февраля 2012

Я ищу способ указать атрибут-заполнитель внутри элемента <g:SuggestBox> в GWT. Я знаю, что элемент <input> позволяет указать этот атрибут, но я решил переключиться на элемент SuggestBox вместо входного.

Кто-нибудь может мне помочь?

Ответы [ 3 ]

9 голосов
/ 17 февраля 2012

Подкласс SuggestBox определенно будет работать.
Если вы не хотите создавать дополнительный класс, вы также можете легко добавить placeHolder к существующему SuggestBox, установив атрибут напрямую:

SuggestBox suggestBox = new SuggestBox();
suggestBox.getElement().setAttribute("placeHolder", "SOME TEXT);
8 голосов
/ 16 февраля 2012

Вы должны создать свой собственный виджет SuggestBox, после чего вы можете установить для него атрибут placeholder. Например:

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

PS: работает только в современном браузере. Для правильной реализации этого в старых браузерах, также проверьте стороннюю библиотеку lib wogwt , у нее есть TextBoxWithPlaceholder класс, расширяющий TextBox:

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

В этом случае вы можете отправить этот экземпляр TextBoxWithPlaceholder в конструктор SuggestBox(SuggestOracle oracle, TextBoxBase box).

2 голосов
/ 18 декабря 2013

Обратите внимание, что вы получите исключение, если вызовете метод getElement() до того, как виджет будет добавлен в 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);
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...