Primefaces p:日历并将用户输入格式化为正确的日期

时间:2013-08-29 20:49:24

标签: jquery jsf primefaces calendar mask

这是我的问题:

我需要一种不验证(已经完成)的方法,但是将用户输入格式化/转换为以下格式:MM / dd / yyyy

使用JSF和Primefaces,遗憾的是你无法使用p:maskinput和p:calendar或者我的问题非常容易解决。

我已经进行了搜索和搜索,并尝试了许多方法让它无法解决问题。

我相信我的解决方案在于此链接:http://digitalbush.com/projects/masked-input-plugin/

这是代码的样子:

<p:outputLabel value="#{originalreturned}: " />

<p:calendar value="#{origReturnedDate}" 
            showOn="button" 
            pattern="MM/dd/yyyy" 
            showButtonPanel="true"
            navigator="true" 
            id="originalRetDate"
            onblur="formatDate(id);"
            size="10"
            yearRange="#{commonUtils.getCalendarRange()}"
            rendered="#{!isDocumentInquiryMode}">

    <f:convertDateTime pattern="MM/dd/yyyy"/>

    <f:attribute name="dateLabel" value="#{document_approved}"/>

</p:calendar>

<h:inputText id="date" value="#{origReturnedDate}" rendered="#{isDocumentInquiryMode}">  
     <f:convertDateTime pattern="MM/dd/yyyy" />
</h:inputText>

我只是不知道如何合并和使用上面链接中的插件,或者我是否有不同的方式?

我尝试在导入外部.js文件时遵循JSF和PrimeFaces的标准。但它根本不起作用。

感谢您对我提出的任何建议

插件示例: http://jsfiddle.net/smdvA/579/

1 个答案:

答案 0 :(得分:2)

这是真的,为时已晚,但也许可以帮助其他人。你不能使用Mask但你可以使用正则表达式来表示例如:

<p:calendar value="#{MyBean.MyDate}" id="MyCalendar"  effect="explode"  >
            <f:validateRegex pattern="^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$">
             <p:ajax update="msgMyCalendar" event="keyup" />   
           </f:validateRegex>
             </p:calendar>
              <p:message for="MyCalendar" id="msgMyCalendar" display="icon"/>