2016-05-25 16 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

這是你的第一個選項還是第二個選項? – wqu

-2

我已經成爲moment圖書館的忠實粉絲。使用該庫,計算年齡很簡單,只要:

moment().diff(moment(dateString),'years'); 

其中dateString是這樣的: 'YYYY-MM-DD'。要解析其他日期格式,你必須在構造函數中使用適當的解析格式,如:

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

其中dateString是在MM/DD/YYYY格式。但是在你的代碼中包含moment.js使得這件事變得非常聰明。

+0

雖然它可能有用,但並不回答問題 – 42shadow42

+0

問題在於如何運行代碼以響應用戶輸入,而不是如何執行年齡計算。 – Barmar