Я немного изменил код.Я думаю, что следующее решение будет работать для проверки срока действия кредитной карты.Это позволяет m / yy или m / yyyy формат даты истечения.
$.validator.addMethod(
"ccexpdate",
function (value, element) {
// Initialize todays date i.e start date
var today = new Date();
var startDate = new Date(today.getFullYear(),today.getMonth(),1,0,0,0,0);
// Initialize End/Expiry date i.e. adding 10 years to expire
var futureLimitDate= new Date(today.getFullYear()+10,today.getMonth(),1,0,0,0,0);
var expDate = value;
var expYearCheck='';
// Check Date format
var separatorIndex = expDate.indexOf('/');
if(separatorIndex==-1)return false; // Return false if no / found
var expDateArr=expDate.split('/');
if(expDateArr.length>2)return false; // Return false if no num/num format found
// Check Month for validity
if(eval(expDateArr[0])<1||eval(expDateArr[0])>12)
{
//If month is not valid i.e not in range 1-12
return false;
}
//Check Year for format YY or YYYY
switch(expDateArr[1].length)
{
case 2:expYearCheck=2000+parseInt(expDateArr[1], 10);break; // If YY format convert it to 20YY to it
case 4:expYearCheck=expDateArr[1];break; // If YYYY format assign it to check Year Var
default:return false;break;
}
// Calculated new exp Date for ja
expDate=new Date(eval(expYearCheck),(eval(expDateArr[0])-1),1,0,0,0,0);
if(Date.parse(startDate) <= Date.parse(expDate))
{
if(Date.parse(expDate) <= Date.parse(futureLimitDate))
{
// Date validated
return true;
}else
{
// Date exceeds future date
return false;
}
}else
{
// Date is earlier than todays date
return false;
}
},
"Must be a valid Expiration Date."
);