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 に答える