1

日付のフィールドがあります(例: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を受け入れ、日付を検証することを考えています。今の私の論理と少し混乱しています。

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 に答える