使用事件监听器在javascript中获得年龄

时间:2016-05-25 18:54:38

标签: javascript

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中给出表单输入的生日。是否有一个事件监听器可以用来在输入中传递这个函数来获取日期并计算年龄?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:-2)

我已成为moment图书馆的忠实粉丝。使用该库,计算年龄就像:

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

其中dateString类似于:&#39; YYYY-MM-DD&#39;。要解析其他日期格式,您必须在构造函数上使用适当的解析格式,例如:

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

其中dateString采用MM / DD / YYYY格式。但是在你的代码中包含moment.js会让这些东西变得非常聪明。