2016-05-25 6 views
0
function getAge(dateString) { 
     var today = new Date(); 
     var birthDate = new Date(dateString); 
     var age = today.getFullYear() - birthDate.getFullYear(); 
     var m = today.getMonth() - birthDate.getMonth(); 
     if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
      age--; 
     } 
     return age; 
    } 

私のJavaScriptスクリプトにこのコードがあり、htmlのフォームに入力された誕生日を表示する方法を探しています。この関数を入力内に渡して日付を取得して年齢を計算するために使用できるイベントリスナーはありますか?イベントリスナーを使用してJavaScriptで年齢を取得する

答えて

0

HTML

<input type="text" id="input-age" /> 
<button onclick="getAge()">Calculate Age</button> 

JS

function getAge() { 
    var dateString = document.getElementById('input0age').value; 
    var today = new Date(); 
    var birthDate = new Date(dateString); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    return age; 
} 

またはイベントリスナー

var input = document.getElementById('input-age'); 

input.addEventListener('input', function() { 
    getAge(input.value) 
}); 

function getAge(dateString) { 
    var today = new Date(); 
    var birthDate = new Date(dateString); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    return age; 
} 
+0

これはhtml形式では印刷されませんか? – wqu

+0

値を取得したら、セレクタパスを使用して任意の場所に表示できます。 'document.getElementById( 'output')。value = age;' – softvar

+0

は、あなたが推奨する最初のオプションまたは2番目のオプションの場合はこれですか? – wqu

-2

私はmomentライブラリの大ファンになりました。

日付ストリングのようなものである
moment().diff(moment(dateString),'years'); 

:: 'YYYY-MM-DD' はライブラリを使用して、コンピューティング時代は同じくらい簡単です。日付ストリングは、そのMM/DD/YYYY形式である

moment().diff(moment(dateString, 'MM/DD/YYYY'), 'years'); 

:他の日付フォーマットを解析するために、あなたは次のように、コンストラクタに適切な解析形式を使用する必要があります。しかし、あなたのコードの中にmoment.jsを含めれば、このようなことはかなり頭のよいことになります。

+0

これは役に立つかもしれませんが、これは質問に答えません – 42shadow42

+0

質問は、年齢計算の実行方法ではなく、ユーザーの入力に応じてコードを実行する方法に関するものでした。 – Barmar

関連する問題