2013-08-14 3 views
5

enter image description hereТекст по умолчанию (заполнитель) в компоненте InputText

Я хочу, чтобы отобразить по умолчанию информативный текст в JSF а/Primefaces inputText компонент.

  • Этот текст должен исчезнуть, когда пользователь нажмет на поле Текст.
  • Появляется, когда он нажимает снаружи, не набрав ничего.
  • Если пользователь отправляет форму без какого-либо значения, это значение по умолчанию не должно быть установлено в Свойство Bean.

Я знаю, что установка значения по умолчанию для BeanProperty в ManagedBean будет работать, но я этого не хочу.
Просьба предложить любые настройки JQuery, если возможно.
Перенаправить меня вправо Вопрос, если этот вопрос повторяется.

+1

В базовых выражениях HTML эта вещь называется «заполнителем». Это новое ключевое слово поиска должно дать вам подсказки. – BalusC

+4

'' –

+0

@XtremeBiker -why не оставлять ответ? – kolossus

ответ

14

В начало страницы содержит в своем последнем исполнении атрибут placeholder, который вы можете использовать для p:inputText. Кроме того, существует компонент p:watermark, который создает решение на основе JS для совместимости с браузером. Поэтому вам определенно не нужно устанавливать значение по умолчанию в бэк-файл. Просто используйте один из следующих решений:

<h:outputLabel value="Search: "/> 
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}" 
    required="true" label="Keyword" placeholder="search" /> 

Для устаревших браузеров:

<h:outputLabel value="Search: "/> 
<p:inputText id="search_input_id" value="#{watermarkBean.keyword}" 
    required="true" label="Keyword" /> 
<p:watermark for="search_input_id" value="search" /> 

Также при использовании JSF 2,2, вы можете использовать его PASSTHROUGH атрибуты. Добавление xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" имен на вашей странице, вы можете достичь следующим образом, как для JSFh:inputText и Primefacesp:inputText:

<h:inputText value="#{watermarkBean.keyword}" 
    pt:placeholder="search" /> 

Или обернув его в тег с TagHandler:

<h:inputText value="#{watermarkBean.keyword}"> 
    <f:passThroughAttribute name="placeholder" 
     value="search"/> 
</h:inputText> 

который создает HTML 5 based ввод с placeholder атрибут:

<input placeholder="search"> 
+0

Хороший ответ. Обратите внимание, что OP tagged JSF 2.2, который предлагает стандартную альтернативу. Я не уверен на 100%, если OP помечен JSF 2.2, потому что он действительно использует его, или потому, что он думает, чтобы привлечь больше внимания. Я ничего не вижу в тексте вопроса или в ранее задаваемых вопросах, что еще раз подтверждает, что он действительно использует JSF 2.2. – BalusC

+0

Если вы считаете, не стесняйтесь, отредактируйте мой ответ или опубликуйте новый ;-) –

+0

Спасибо @XtremeBiker –

1

JQuery твик будет:

<p:inputText styleClass="search" value="#{filter.search}"/> 
<script type="text/javascript"> 
    $('input.search).attr('placeholder','search'); 
</script> 

Вам не нужно ставить дополнительный компонент для того, чтобы установить атрибут только, и вы можете массово обогатить входы (если необходимо).