【问题标题】:Dynamic Date Validation with PopUp使用 PopUp 进行动态日期验证
【发布时间】:2023-03-24 01:00:02
【问题描述】:

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

【问题讨论】:

    标签: java javascript validation date


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 2013-08-08
      相关资源
      最近更新 更多