2013-05-09 70 views
6

我用這個:readOnlyInput不P中工作:日曆primefaces

<p:calendar id="popupCal" yearRange="c:c+1" lang="fr" required="true" 
       requiredMessage="Date obligatoire" readonlyInput="true" 
       navigator="true" pattern="dd-M-yyyy" locale="fr" 
       showOn="both" value="#{commandeMB.commande.dateCmd}" 
       mindate="#{commandeMB.todaysDate}" /> 

,併爲我寫的,我readonyinput設爲我還測試了只讀爲true,既要真實,但真實

沒有結果,總是可以改變日期

它是一個錯誤?

謝謝你advane

回答

1

readonly使用時,你只是允許用戶使用面板挑選日期和不能從輸入更改日期。如果你想讓用戶不能改變日期,你必須使用disabled屬性來做到這一點。

如果希望用戶可以看到日期選擇器,並且不能更改日期,您可以通過禁用dateselectevent:

<p:calendar onfocus="$('#ui-datepicker-div td').unbind();" readonly="true"/> 
+0

但使用禁用時,組件顯示不好 – begiPass 2013-05-09 21:20:03

+0

@begiPass:那麼你想要什麼? – 2013-05-10 01:17:34

+0

我剛剛更新了我的答案,可能是你想要的。 – 2013-05-10 01:56:14

0

隨着PF 3.4,該解決方案將:

  • 保留1.0不透明在只讀文本輸入字段 (即,不要使不透明度與禁用=真);
  • 從該字段中刪除Datepicker類;
  • 從現場解除事件。

(1)創建一個函數:

function setCalendarVis(readOnly) { if(readOnly) $('input:text').removeClass('hasDatepicker').unbind(); }

(2)定義一個日曆組件:

<p:calendar readonly="#{bean.readonly}" value="#{bean.datefield}" mode="popup"/>

(3) 呼叫的功能,例如,可能通過ap上的ajax事件:databable:

<p:ajax event="rowDblselect" update="@form" oncomplete="setCalendarVis(#{bean.readonly});"/>

我的應用程序使用不同樣式的讀寫能力: enter image description here

我使用的解除綁定()是相當強力。您可以優化它以僅解除特定事件

火焰套裝!

5

如果您希望該用戶一定不能改變日曆的日期值,只查看然後在p:calender屬性使用showOn="none"readonly="true",我用它和它的工作(我使用Primefaces 5.0希望適用於所有版本):

1

其實我發現問題是套管。在我們的應用程序中,它只是readInlyInput,這就是它的工作原理。 readOnlyInput不。