readOnlyInput在p:calendar primefaces中不起作用

时间:2013-05-09 08:52:10

标签: jsf-2 primefaces calendar readonly

我用这个:

    <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

我也测试了readonly为true,两者都是true但没有结果,总是可以更改日期

这是一个错误吗?

谢谢你的推荐

7 个答案:

答案 0 :(得分:5)

如果您希望该用户无法更改日历日期的值,只需查看它,然后在showOn="none"属性中使用readonly="true"p:calender,我已经使用过它它的工作(我使用Primefaces 5.0希望它适用于所有版本):

答案 1 :(得分:1)

当您只允许用户使用面板选择日期并且无法从输入更改日期时,将使用

readonly。如果您希望用户无法更改日期,则必须使用disabled属性来执行此操作。

如果您希望用户可以看到日期选择器并且无法更改日期,您可以通过以下方式禁用dateselectevent:

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

答案 2 :(得分:1)

其实我发现问题是套管。在我们的应用程序中,它是readonlyInput,它就是它的工作原理。 readOnlyInput没有。

答案 3 :(得分:0)

使用 PF 3.4 ,此解决方案将:

  • 在只读文本输入字段上保留1.0不透明度 (即,不要使用disabled = true来调暗不透明度);
  • 从字段中删除Datepicker类;
  • 从现场解除绑定事件。

(1)创建一个函数:

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

(2)定义日历组件:

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

(3) 例如,可以通过p:databable:

上的ajax事件调用该函数

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

我的应用程序使用不同的样式进行读写功能: enter image description here

我对unbind()的使用相当暴力。您可以对其进行优化以仅取消绑定特定事件

火焰套装!

答案 4 :(得分:0)

只需在输入中添加[readonlyInput]="true"属性。

示例:

 <p-calendar [readonlyInput]="true">

答案 5 :(得分:-1)

readonly 不适用于 p:calendar,但您可以使用 disabled 代替。它们的外观并不相同,但无论如何都可以显示其价值。

就像这样:

<p-calendar [disabled]="true"></p-calendar>

希望能解决您的问题!

答案 6 :(得分:-1)

这就是我实现只读行为的方式:

<p-calendar [readonlyInput]="true" [showOnFocus]="false">