我看到了许多基于出生日期的年龄验证代码,但似乎没有一个可以在我的代码中正常工作。
基本上,我的TAFE课程要求我创建一个表单,包括名字、姓氏、电子邮件地址、联系电话号码、出生日期和兴趣领域(下拉框中有儿童和成人图书)。
我需要验证出生日期是否符合正确格式。我已成功完成了这个任务,它也考虑了30天月份和闰年。
接下来的部分要求兴趣领域下拉框在提交时进行验证,以确保该人的年龄超过18岁。但是只在所选择的兴趣领域为成人图书时才进行验证。
现在,我可以简单地做一些事情,使所有1996年及其以上的年龄都被拒绝,但我更愿意创建一个从输入的出生日期中进行验证的程序,因为我认为这是预期的操作。
出生日期以DD/MM/YYYY的形式输入。
以下是我目前的代码:
<script language="JavaScript" type="text/javascript">
function validateForm()
{
*snipped firstname, surname, email validation*
var dob = document.getElementById("dateofbirth").value;
*snipped dob validation*
var area = document.getElementById("areaofinterest").value;
if (area == "")
{
alert("Please select an Area of Interest!");
return false;
}
var now = new Date();
var birthdate = dob.split("/");
var born = new Date(dob[2], dob[0], dob[1] * 1 - 1);
var age = Math.floor((now.getTime() - born.getTime()) / (365.25 * 24 * 60 * 60 * 1000));
if (area == "adults" && age<18)
{
alert("You need to be 18 years of age and older for the Adults books!");
return false;
}
return true;
}
</script>
我只是一个 JavaScript 的初学者,所以这段代码很有可能存在一些明显的错误。但基本上,我想要实现的就是下面写的内容。
如果选择了“成年人图书区”,则检查出生日期是否超过18岁。
下面是我的 HTML 代码:
<form method="post" name="form1" onsubmit="return validateForm()" action="">
Fields marked with * are required to be filled out!
<br />
First Name*:
<input type="text" id="firstname" name="First Name" placeholder="e.g. John" />
<br />
Surname*:
<input type="text" id="surname" name="Surname" placeholder="e.g. Smith" />
<br />
Email address*:
<input type="text" id="emailaddress" name="Email Address" placeholder="e.g. john.smith@example.com" />
<br />
Contact phone number:
<input type="text" id="phonenumber" name="Contact Phone Number" placeholder="e.g. 0410 224 567" />
<br />
Date of Birth*:
<input type="text" id="dateofbirth" name="Date of Birth" placeholder="DD/MM/YYYY" />
<br />
Area of Interest*:
<select id="areaofinterest" name="Area Of Interest" />
<option value="">Select interest</option>
<option value="children">Books for children</option>
<option value="adults">Books for adults</option>
</select>
<br />
<input type="submit" value="Submit" /><input type="reset" value="Reset" />
</form>
我很感谢任何反馈。如果此问题已经得到解答,我很抱歉。我知道可能已有解答,但我似乎无法使其在我的用途中正常工作。可能我犯了一个简单的格式错误或者遗漏了某些东西。这可能是非常明显的问题。