我是javascript的新手。我正在尝试创建一个页面,其中包含出生日期的输入选项。点击提交按钮后,我想确认该人未成年(18岁以上)。
这是我的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 :(得分:0)
.getTime()
是JavaScript中Date/Time object
的一种方法。
var dob = document.forms["myForm"]["dob"].value;
不是有效的Date
对象,因为这是一个字符串。
导致您在dob.getTime()
中出错。
防止错误只是在设置后将dob
简单地解析为日期。
var dob = new Date(document.forms["myForm"]["dob"].value);
OR
var dob = document.forms["myForm"]["dob"].value;
dob = new Date(dob);
希望有所帮助
答案 1 :(得分:0)
您在输入值上使用了getTime()
,但您需要在Date
对象上使用它。为此,从输入值构造一个Date
对象,然后您就可以获得时间。但请注意,Date
必须采用以下格式之一:
YYYY-MM-DD
MM/DD/YYYY
否则你会收到错误。您显然可以接收任何格式,然后将其重新格式化为您需要的格式。
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>