我正在尝试使用 JavaScript 来验证我的年龄验证表单,但它似乎不起作用......不知道为什么。
基本上输入出生日期:dd/mm/yyyy
,我需要确保为了提交表格,该人的年龄在15 - 80
..我尝试过这种方式验证,但似乎不起作用。
HTML
<label>
Date of birth:
<input type="text" name="birth date" id="DOB"
placeholder="dd/mm/yyyy" maxlength="10" pattern="\d{1,2}\/\d{1,2}\/\d{4}"
required="required"/>
</label>
Javascript
var birthDate = document.getElementById("DOB").value;
if (2019 - birthDate < 15 || 2019 - birthDate > 80) {
errMsg =errMsg + "your age must be between 15 and 80\n";
result = false;
}
if (errMsg !== "") {
alert(errMsg);
}
return result;
最佳答案
因此,根据您的评论,您有一个这样的文本框:
<form>
<input type="text" name="birth date" id="DOB" placeholder="dd/mm/yyyy" maxlength="10" pattern="\d{1,2}\/\d{1,2}\/\d{4}" required="required"/></label>
</form>
因此,document.getElementById("DOB").value;
格式为 dd/mm/yyyy。
所以,如果您只是检查年份,这应该可以解决问题:
onload = function() {
var form = document.getElementById("form"); //assuming this is your form's ID
form.onsubmit = validate;
}
function checkAge() {
var currentYear = new Date().getFullYear();
var birthDate = document.getElementById("DOB").value;
var errMsg = ""; //this line was missing from my code, and preventing it from working.
//turning "dd/mm/yyyy" into an array of the form { "dd", "mm", "yyyy" }, and taking the "yyyy" part
var birthYear = birthDate.split("/")[2];
var age = currentYear - birthYear;
if (age < 15 || age > 80) {
errMsg =errMsg + "your age must be between 15 and 80\n";
result = false;
}
if (errMsg !== "") {
alert(errMsg);
return false; //form won't submit
}
return true; //form will submit
}
如你所见,我还使用了getFullYear()
这样我们就不会硬编码固定的当前年份。
但是如果你使用 <input type="date">
可能会更干净元素而不是文本框。
关于javascript - 使用 dd/mm/yyyy 验证年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928829/