1

我有一个日期字段,例如 dd/mm/yyyy 。我有验证代码,一旦日期不是正确的格式 dd/mm/yyyy,就不允许用户继续

我想要做的是有一个新字段,该字段的默认值 dd/mm/yyyy 。我希望用户能够像 dd/mm/yyyy 一样离开此字段并继续,否则如果他们在字段中输入其他任何内容,则它需要是有效日期。所以接受 dd/mm/yyyy 和任何有效日期,例如 12/12/2012

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 以及验证日期。现在对我的逻辑有点困惑。

4

1 回答 1

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() );
}
于 2012-12-07T11:59:25.367 回答