我有一个日期字段,例如dd / mm / yyyy。我有验证代码,一旦日期不是正确的格式dd / mm / yyyy,就不允许用户继续
我想要做的是在字段中使用默认值dd / mm / yyyy的新字段。我希望用户能够像dd / mm / yyyy一样离开此字段并继续,否则如果他们在字段中输入任何其他内容,则需要是有效日期。所以接受dd / mm / yyyy和任何有效日期,例如2012年12月12日
else if(!validateDate(document.lending.date.value)){alert("Please enter a valid date. The date must be of the format dd/mm/yyyy");document.lending.date.focus();return false;}
function validateDate(thedate){
if(thedate.length <11)
{
try{
day = thedate.substring(0,2);
mmonth = thedate.substring(3,5);
year = thedate.substring(6,10);
if((thedate.charAt(2)!="/") || (thedate.charAt(5)!="/") || (day<1) || (day>31) || (mmonth<1) || (mmonth>12) || (year<1999) || (year>9999) || (!validateNumberWithoutDecimal(day)) || (!validateNumberWithoutDecimal(mmonth)) || (!validateNumberWithoutDecimal(year)))
{
return false;
}
else
return true;
}catch(e){return false;}
}
else
return false;
}
我正在考虑编写一个新函数validateMyNewDate并以这种方式执行,以便它接受dd / mm / yyyy以及验证日期。现在对我的逻辑感到有些困惑。
答案 0 :(得分:4)
您可以尝试使用Date
构造函数进行验证:
var isValidDate = function(str) {
return !!new Date(str).getTime();
}
它适用于'dd / mm / yyyy'格式,f.ex:
isValidDate('12/12/1999'); // true
isValidDate('12/52/1999'); // false
如果您想确保用户使用完全'dd / mm / yyyy'格式,您可以将其与正则表达式结合使用:
更新:已添加,因此它还会验证默认输入“dd / mm / yyyy”。
var isValidDate = function(str) {
return str == 'dd/mm/yyyy' ||
( /^\d{2}\/\d{2}\/\d{4}$/.test(str) && new Date(str).getTime() );
}