当我选中时,文本框中的结果是NaN。在我家里的电脑里,它会输出一个数字。请帮忙。
function ageCount() {
var date1 = new Date();
var dob = document.getElementById("dob").value;
var date2 = new Date(dob);
var pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
if (pattern.test(dob)) {
var y1 = date1.getFullYear();
//getting current year
var y2 = date2.getFullYear();
//getting dob year
var age = y1 - y2;
//calculating age
document.getElementById("ageId").value = age;
document.getElementById("ageId").focus ();
return true;
} else {
alert("Invalid date format. Please Input in (dd/mm/yyyy) format!");
return false;
}
}
答案 0 :(得分:0)
如果您将无效的日期字符串传递给Date
,则会收到无效的日期。
(new Date("9999-99-99"))
如果您在无效日期致电getFullYear
,则会获得NaN
。
如果您尝试对NaN
执行任何算术运算,则会得到Nan
。
所以,你的问题是你从输入框中选中了它并且它是空的,这是传递给你行中Date
的内容:
var date2 = new Date(dob);
您应该改进pattern
以消除任何无效日期。
答案 1 :(得分:0)
如果您确实搜索dd/mm/yyyy
日期格式,
那么你的模式应该是
/^\d{1,2}\/\d{1,2}\/\d{4}$/
通知:您实际上并未计算年龄,而是计算出生年份与当前年份之间的差异。 如果一个人的生日发生在当前日期之后,则会错误一年。 您可以查看this response以获得构建此计算器的良好起点。