即使我单击文本框或日期选择器更改日期,我也需要允许我键入的日期保留在文本框中。
以下是本网站的一个示例,用于显示我想要的内容>>>>> http://www.flyscoot.com/index.php/en/
在我输入出发日期之后,在我点击文本框或日期选择器之后,看到我输入的上一个日期仍显示在文本框中。
我认为问题在于日历标记onfocus
行。假设我删除onfocus="$(this).mask('99/99/9999');">
是的日期保留在文本框中,但它不允许我再次键入日期手动。
我应该在代码中添加什么才能使此功能正常工作?
使用Javascript:
function parseDate(s) {
//including leap year:
var reg = /^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g;
if (!reg.test(s)) {
return "Invalid Date";
}
var dateParts = s.split("/");
var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);
var dateStrParts = date.toString().split(" ");
return (date.getDate() + ", " + dateStrParts[1] + " " + dateStrParts[3]);
}
日历标记:
<p:calendar
value="#{pc_Rpt2202.asat_date}"
id="rp2202_input_as_at"
styleClass="calendar"
maxlength="10"
pattern="dd MMM yyyy"
onchange="$(this).val(parseDate($(this).val()))"
onfocus="$(this).mask('99/99/9999');"
>
<p:watermark for="rp2202_input_as_at" value="dd/MMM/yyyy" />