2017-01-13 52 views
0

下面的代碼使用jQuery驗證檢查的出生日期在窗體上。它多年來行之有效,在今年2016/17失敗了,但只能在IE和Chrome之交,Firefox的罰款。jQuery驗證日期代碼失敗在某些瀏覽器

經過一番調查後,我可以使用18作爲年齡,而不是17歲。然後我意識到這是由於當前是2017年,而減去17是2000年。我的觀點是,在IE和Chrome中,它是使用兩位數年份。 01/01/00的日期無效。通過的日期是DD/MM/YYYY。

我不知道如何強制四位數年份,以確保該工程無論並且不會摔倒明年18歲。

> $.validator.addMethod("ValidDOB17", function (value, element) { 
    // checking whether the date entered is in correct format 
    var isValid = value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/); 
    if (isValid) { 
     var today = new Date(); 
     var minyear = new Date(); 
     today.setYear(today.getYear() - 17); 
     minyear.setYear(today.getYear() - 82); 
     var DOB = Date.parse(value); 
     if (DOB >= today || DOB <= minyear) { 
      isValid = false; 
     } 
     return isValid; 
    } 
}, "You must be aged over 17"); 
+1

使用'.getFullYear()'而不是'.getYear回到2位數的年份爲年()' –

回答

0

使用getFullYear()setFullYear()。該getYear()setYear()方法現在已經過時 - 他們是由2000年以前

var value = '01/13/2000'; 
 
var isValid = /^\d\d?\/\d\d?\/\d\d\d\d$/.test(value); 
 

 
if (isValid) { 
 
    var today = new Date(); 
 
    var minyear = new Date(); 
 
    today.setFullYear(today.getFullYear() - 17); 
 
    minyear.setFullYear(today.getFullYear() - 82); 
 
    var DOB = Date.parse(value); 
 
    if (DOB >= today || DOB <= minyear) { 
 
    isValid = false; 
 
    } 
 
    console.log(value + (isValid ? ' is valid' : ' is invalid')); 
 
}

相關問題