2013-02-19 102 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 2013-02-19 07:20:13

+0

如果Watermark工作了,我會感到寬慰,但事實並非如此。根據http://code.google.com/p/primefaces/issues/detail?id=3919,我們不能爲Select元素添加水印。所以我正在尋找替代品。 – Rajath 2013-02-19 07:38:52

+1

那麼,'selectOneMenu'上的水印就像附加的選擇項目,「請選擇一個項目...」。我不明白爲什麼你不能只添加一個空值的項目? – partlov 2013-02-19 07:49:45

回答

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

我試過這個,它的工作原理。但是,如果用戶第一次打開頁面時單擊Submit,我需要執行服務器端驗證,而'Select'用作模擬佔位符。它導致文本'選擇'作爲一個項目提交,我絕對不想要。 – Rajath 2013-02-19 12:59:22

+0

只需使用'required =「true」'通常的方式。無論如何它的值是'null'。 – BalusC 2013-02-19 13:14:07

+0

非常感謝! – Rajath 2013-02-19 13:16:03

相關問題