我有一个代码以MMYY
格式验证日期。这会在提交按钮之前显示动态弹出对话框。为此,代码如下:
<ext:text name="caseDetailForm" property="phaseData.phaseDateExpiration" styleId="_dateExp"
style="width:100px" maxlength="4" titleKey="prompt.exp.date" onkeyup="validateCardExpiry(this);" />
,功能是:
function validateCardExpiry(field) {
var cardExpRegEx1or2char = /^(0[1-9]?|1[0-2]?)$/;
var cardExpRegEx3or4char = /^(0[1-9]?|1[0-2])[0-9]?[0-9]?$/;
var cardExpDate = field.value;
var msg = '<bean:message key="errors.bad.input.characters.detected"/> - '+cardExpDate;
+ '\n' + "<bean:message key="prompt.exp.date"/>";
var failed = false;
for (var x = cardExpDate.length; x >= 0; x--) {
cardExpDate = cardExpDate.substring(0, x);
if (cardExpDate.length > 0 &&
((cardExpDate.length <= 2 && !cardExpRegEx1or2char.test(cardExpDate))
|| (cardExpDate.length > 2 && !cardExpRegEx3or4char.test(cardExpDate)))) {
failed = true;
}
else {
field.value = cardExpDate;
break;
}
}
if (failed) {
alert(msg);
}
}
用于MMYY
验证可以正常使用上面的代码。但我需要MM/DD/YYYY
验证。为此,我如何在同一场景中使用弹出窗口进行验证。
答案 0 :(得分:1)
您可以执行以下操作:
function validateDate(s) {
var bits = s.split('/');
var d = new Date(bits[2], ++bits[0], bits[1]);
return d.getFullYear == bits[2] && d.getDate == bits[1];
}
但是很多人没有使用mm / dd / yyyy格式,大多数人使用dd / mm / yyyy或yyyy-mm-dd。