0

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

4

1 回答 1

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。

于 2012-07-16T12:28:07.277 回答