2013-02-19 3 views
1

Мой вопрос в значительной степени говорит обо всем. Я хочу иметь текст-заполнитель в selectOneMenu, но я не думаю, что для его указания есть какой-либо атрибут. Итак, как можно иметь местозаполнитель?Возможно ли иметь текст-заполнитель для p: selectOneMenu?

Я попытался с помощью <p:watermark>, как показано ниже, но это не сработало.

<p:selectOneMenu id="fooMenu"> 
    <f:selectItem itemLabel="foo" itemValue="foo"/> 
    <f:selectItem itemLabel="goo" itemValue="goo"/> 
</p:selectOneMenu> 
<p:watermark value="Select" for="fooMenu"></p:watermark> 
+0

водяной знак не отвечает вашим требованиям или водяной знак не работает так, как ожидается, будет? каково именно ваше требование текста заполнителя? – rags

+0

Было бы приятно, если бы Watermark работал, но это не так. И согласно http://code.google.com/p/primefaces/issues/detail?id=3919, у нас не может быть водяных знаков для элементов Select. Поэтому я ищу альтернативу. – Rajath

+1

Ну, водяной знак на 'selectOneMenu' будет похож на дополнительный элемент select,« Пожалуйста, выберите элемент ... ». Я не понимаю, почему вы не можете просто добавить элемент с пустым значением? – partlov

ответ

11

Это действительно по умолчанию не поддерживается в стандартной HTML <select> элемента, так что нет и ничего в JSF, чтобы установить это.

Вы можете, однако, имитировать один с помощью itemDisabled и немного CSS и jQuery.

<p:selectOneMenu widgetVar="menu" styleClass="with-placeholder" panelStyleClass="hide-disabled" onchange="menu.jq.removeClass('with-placeholder')"> 
    <f:selectItem itemLabel="Select" itemDisabled="true" /> 
    <f:selectItem itemLabel="foo" itemValue="foo"/> 
    <f:selectItem itemLabel="goo" itemValue="goo"/> 
</p:selectOneMenu> 

и

.ui-selectonemenu.with-placeholder .ui-selectonemenu-label { 
    color: #ccc; 
} 
.ui-selectonemenu-panel.hide-disabled .ui-selectonemenu-list-item.ui-state-disabled { 
    display: none; 
} 

Вот video demo.

+0

Я попытался это, и это работает. Но мне нужно сделать проверку на стороне сервера, если пользователь нажимает кнопку «Отправить», когда страница открывается впервые, а «Выбрать» действует как смоделированный заполнитель. Это приводит к тому, что текст «Выбрать» будет представлен как элемент, который я абсолютно не хочу. – Rajath

+0

Просто используйте 'required =" true "' обычный способ. Его значение равно «null». – BalusC

+0

Большое вам спасибо! – Rajath

Смежные вопросы