2013-05-09 16 views
6

Używam tego:readOnlyInput nie działa w p: kalendarz 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}" /> 

i jak pisałem, ja readonyinput wartość true

I badanego również tylko do odczytu na true i zarówno prawdziwe, ale nie wynik, zawsze data może zostać zmieniona

czy to błąd?

dziękuję advane

Odpowiedz

1

readonly jest stosowany, gdy tylko pozwalają użytkownikowi na używanie panelu wybrać datę i daty nie można zmienić od wejścia. Jeśli chcesz, aby użytkownik nie mógł zmienić daty, musisz użyć atrybutu disabled, aby to zrobić.

Jeśli chcesz użytkownik widzi wyboru daty i daty nie można zmienić, można wyłączyć dateselectevent poprzez:

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

ale z wyłączoną komponentem nie wygląda dobrze – begiPass

+0

@begiPass: Więc czego chcesz? –

+0

Właśnie zaktualizowałem swoją odpowiedź, może to być tym, czego potrzebujesz. –

0

Z PF 3.4, to rozwiązanie będzie:

  • Zachowaj 1.0 krycie w polu wprowadzania tekstu tylko do odczytu (tj. nie zamazywaj krycia z disabled = true);
  • Usuń klasę Datepicker z pola;
  • Odłącz zdarzenia od pola.

(1) Tworzenie funkcji:

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

(2) Określanie składnik kalendarza:

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

(3) Wywołanie funkcja na przykład, być może za pośrednictwem zdarzenia ajax na ap: databable:

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

Moja aplikacja wykorzystuje różne style możliwością odczytu i zapisu: enter image description here

Moja wykorzystanie unbind() jest raczej brute force. Możesz zawęzić go, aby rozwiązać tylko określone zdarzenia:.

Ognisty garnitur!

5

Jeśli chcesz, aby użytkownik nie musi być w stanie zmienić wartość kalendarzu daty, po prostu go zobaczyć następnie użyć showOn="none" i readonly="true" w atrybucie p:calender, użyłem go i jego robocza (używam Primefaces 5,0 nadzieję, że działa we wszystkich wersjach):

1

Właściwie znalazłem problem, który ma być obudowany. W naszej aplikacji jest to readonlyInput i tam właśnie działa. readOnlyInput nie.

Powiązane problemy