从一个输入计算年龄并更新另一个输入

时间:2012-09-05 20:14:13

标签: javascript jquery

我知道我必须在这里遗漏一些简单的东西,但我会喜欢一些帮助。

首先,HTML:

<input type="text" name="dob" />
<input id="age" type="text" name="age" />

和Javascript

$('input[name=dob]').change(getAge);
$('input[name=age]').change(getAge);
function getAge() {
    var today = new Date();
    var birthDate = new Date($('input[name=dob]').val());
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
        age--;
    }
    $('#age').val(age);
 };

这对我不起作用。当我在“dob”字段中输入日期时,“age”字段返回NaN。

1 个答案:

答案 0 :(得分:0)

我假设你没有得到正确的年龄(或任何数字回报)。一些建议:

  1. 您在代码块的末尾悬挂一条引号。 删除它,因为它可能导致未被捕获的错误。

  2. 您似乎没有强制执行或验证“dob”输入的任何格式。 Date对象仅采用特定类型的输入。找出您想要的内容然后执行它(在使用之前向用户发送消息并进行检查)。

  3. 在“if”语句的第二部分,使用括号确保它正在检查您想要的内容。我相信你写它的方式导致了这个检查:( (m === 0) && today.getDate() ) < birthDate.getDate()。试试这个:(m === 0) && ( today.getDate() < birthDate.getDate() )。我希望有所帮助。