2017-09-04 5 views
2

javascriptを初めて使用しています。私は、生年月日の入力オプションを持つページを作成しようとしています。送信ボタンをクリックすると、その人が未成年でないことを確認したい(18歳以上)。javascriptのgetTime()でエラーが発生しました

これは私のHTMLコード

<form id="myForm" method="get" action="#"> 

    <p>Date of birth: <input type="date" name="dob" value="MM-DD-YYYY" required></p> 

    <p><input type="submit" value="submit" onclick="return validate_date_of_birth()"> 
</form> 

であり、これは私のjavascript関数である:

function validate_date_of_birth(){ 
    var dob = document.forms["myForm"]["dob"].value; 
    var ageDifMs = Date.now() - dob.getTime(); 
    return true; 
} 

私はdob.getTimeの問題を取得しています()。私は上記のコードで年齢を実際に検証しているわけではないことに注意してください。それは年を検証するためにifループを必要とします。私は差が計算されていない時点で立ち往生しています。 javascriptのalert()関数を使って、Date.now()とdob.getTime()の値をチェックしようとしました。 dob.getTime()の場合、出力される値は「未定義」です。 私は何が間違っていますか?

+0

https://stackoverflow.com/questions/10008050/get-age-from-birthdateこれを試してみてください – user5091906

答えて

0

.getTime()は、JavaScriptでDate/Time objectの方法です。

var dob = document.forms["myForm"]["dob"].value;は有効なDateオブジェクトではありません。これは文字列です。

dob.getTime()にエラーが発生しました。

エラーを防止するには、設定後に最初にdobをDateに解析します。

var dob = new Date(document.forms["myForm"]["dob"].value); 

OR

var dob = document.forms["myForm"]["dob"].value; 
dob = new Date(dob); 

あなたが入力値にgetTime()を使用していますが、Dateオブジェクト上でそれを使用する必要が

0

に役立ちます願っています。このためには、入力値からDateオブジェクトを作成すると、その時間を取得できます。これらの形式のいずれかであることが必要Date、しかし注意してください:

  • YYYY-MM-DD
  • MM/DD/YYYY
  • 2015年3月25日
  • 水曜日2015年3月25日

にそうあなたが得られますエラー。あなたは明らかにどんなフォーマットを受け取っても、あなたが必要なものにそれを再フォーマットすることができます。

function validate_date_of_birth(){ 
 
    var dob = document.forms["myForm"]["dob"].value; 
 
    var ageDifMs = Date.now() - new Date(dob).getTime(); // we make a new Date object from dob 
 
    console.log(ageDifMs); 
 
    return false; // so we can see the result and not be redirected 
 
}
<form id="myForm" method="get" action=""> 
 

 
    <p>Date of birth: <input type="date" name="dob" value="YYYY-MM-DD" required></p> 
 

 
    <p><input type="submit" value="submit" onclick="return validate_date_of_birth()"> 
 
</form>

Date reference

関連する問題