2012-07-16 41 views
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驗證。爲此,我如何在同一場景中使用彈出窗口進行驗證。

回答

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。

+0

但我需要MM/DD/YYYY格式。 – Mdhar9e 2012-07-16 12:30:23

+0

這就是答案的用途。 – RobG 2012-07-17 02:21:17