2013-05-09 10 views
6

ich verwenden:readOnlyInput funktioniert nicht in p: Kalender 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}" /> 

und wie ich schrieb, habe ich readonyinput auf true

ich auch nur lesbar zu wahren und sowohl auf true getestet, aber keine Ergebnis, immer das Datum kann geändert werden

ist es ein Fehler?

danke in advane

Antwort

1

readonly verwendet, wenn Sie nur Benutzer Verwendung Panel erlauben Datum zu holen und von der Eingabe ändern kann nicht aktuell. Wenn Sie möchten, dass der Benutzer das Datum nicht ändern kann, müssen Sie dazu das Attribut disabled verwenden.

Wenn Sie Benutzer möchten Datumsauswahl sehen können und das Datum nicht ändern können, können Sie dateselectevent über deaktivieren:

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

aber mit deaktivieren, erscheint die Komponente nicht gut – begiPass

+0

@ BegiPass: Also was willst du? –

+0

Ich habe gerade meine Antwort aktualisiert, das könnte was du willst. –

0

Mit PF 3.4, diese Lösung:

  • beibehalten 1,0 Opazität

    in einem schreibgeschützten Texteingabefeld (dh, dämmen Sie die Deckkraft nicht mit disabled = true);
  • Entfernen Sie die Datepicker-Klasse aus dem Feld;
  • Ereignisse aus dem Feld entfernen.

(1) Erstellen einer Funktion:

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

(2) definieren einen Kalender-Komponente:

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

(3) Rufen Sie die Funktion, zum Beispiel über ein Ajax-Event auf ap: databable:

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

Meine App nutzen verschiedene Stile für Lese- und Schreibfähigkeit: enter image description here

Meine Verwendung von unbind() ist ziemlich brutale Gewalt. Sie können sie verfeinern, um nur bestimmte Ereignisse zu lösen..

Flammenanzug an!

5

Wenn Sie, dass der Benutzer wollen, muss nicht in der Lage sein, den Wert des Kalenders zu ändern, Termine, sehen nur dann showOn="none" und readonly="true" in p:calender Attribute verwenden, ich habe sie und ihre Arbeits verwendet (ich verwende Primefaces 5.0 es hoffen funktioniert bei allen Versionen):

1

Eigentlich habe ich das Problem gefunden, Gehäuse zu sein. In unserer App ist es readonlyInput und dort funktioniert es. readOnlyInput nicht.