1

这是我的问题:

我需要一种不验证(已经完成)但将用户输入格式化/转换为这种格式的方法: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>

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

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

感谢您对我的任何建议

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

4

1 回答 1

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"/> 
于 2014-04-01T09:51:20.053 回答