使用PopUp进行动态日期验证

时间:2012-07-16 12:22:06

标签: java javascript validation date

我有一个代码以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验证。为此,我如何在同一场景中使用弹出窗口进行验证。

1 个答案:

答案 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。