2017-01-13 11 views
0

以下のコードは、Jquery Validateでフォームの生年月日を確認するために使用されています。それは何年もうまくいきました.2016/17年には失敗しましたが、IEとChromeだけでFirefoxは正常でした。Jquery一部のブラウザで日付コードの検証に失敗する

若干の調査の後、私はそれを17歳ではなく18歳として使用することができました。今年は2017年とマイナス17歳のためです。私の見解は、IEとChromeでは2桁の年を使用します。 01/01/00の日付が無効です。渡された日付はDD/MM/YYYYです。

私は4桁の年を強制的にどのようにして確実に動作させるかわからないため、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

使用ではなく.getYear' 'より.getFullYear()'の前に年間、2桁の年を返すために作られた - getYear()setYear()法が廃止されました –

答えて

0

getFullYear()およびsetFullYear()を使用してください。 `)(それらは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')); 
 
}

関連する問題