2017-09-04 203 views
2

我是javascript的新手。我正在尝试创建一个包含出生日期输入选项的页面。点击提交按钮后,我想验证该人不是未成年人(18岁以上)。在javascript中使用getTime()时出错

这是我的HTML代码

<form id="myForm" method="get" action="#"> 

    <p>Date of birth: <input type="date" name="dob" value="MM-DD-YYYY" required></p> 

    <p><input type="submit" value="submit" onclick="return validate_date_of_birth()"> 
</form> 

,这是我的javascript函数:

function validate_date_of_birth(){ 
    var dob = document.forms["myForm"]["dob"].value; 
    var ageDifMs = Date.now() - dob.getTime(); 
    return true; 
} 

我越来越有dob.getTime问题()。请注意,我并没有真正验证上述代码中的年龄。这将需要一个if循环来验证年龄。我被困在一个点没有被计算的区别。 我试图通过在javascript中使用alert()函数来检查Date.now()和dob.getTime()的值。对于dob.getTime(),它打印的值是“未定义的”。 我在做什么错?

+0

试试这个https://stackoverflow.com/questions/10008050/get-age-from-birthdate – user5091906

回答

0

.getTime()是JavaScript中的Date/Time object的一种方法。

var dob = document.forms["myForm"]["dob"].value;不是有效的Date对象,因为这是一个字符串。

它在dob.getTime()中导致您的错误。

为了防止错误,只需在设置后首先解析dob到Date。

var dob = new Date(document.forms["myForm"]["dob"].value); 

OR

var dob = document.forms["myForm"]["dob"].value; 
dob = new Date(dob); 

希望帮助

0

您输入值使用getTime(),但你需要使用它Date对象。为此,从输入值构建一个Date对象,然后您就可以在其上获得时间。不过要小心,Date需要在这些格式之一:

  • YYYY-MM-DD
  • MM/DD/YYYY
  • 2015年3月25日
  • 周三2015年3月25日

否则你会得到一个错误。你显然可以接收任何格式,然后将其重新格式化为你所需要的。

function validate_date_of_birth(){ 
 
    var dob = document.forms["myForm"]["dob"].value; 
 
    var ageDifMs = Date.now() - new Date(dob).getTime(); // we make a new Date object from dob 
 
    console.log(ageDifMs); 
 
    return false; // so we can see the result and not be redirected 
 
}
<form id="myForm" method="get" action=""> 
 

 
    <p>Date of birth: <input type="date" name="dob" value="YYYY-MM-DD" required></p> 
 

 
    <p><input type="submit" value="submit" onclick="return validate_date_of_birth()"> 
 
</form>

Date reference