1

我知道我必须在这里遗漏一些简单的东西,但我希望得到一些帮助。

首先,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。

4

1 回答 1

0

我假设您没有得到正确的年龄(或根本没有任何数字回报)。几点建议:

  1. 你有一个单引号挂在代码块的末尾。删除它,因为它可能会导致未捕获的错误。

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

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

于 2012-09-05T20:36:37.840 回答