A. *_*lar 10 html javascript validation
我最近开始使用Javascript了.我正在测试的是以有效格式检查DoB.下一步将检查年龄.
我的HTML代码包含的内容如下
<form name="ProcessInfo" action="#" method="POST" enctype="multipart/form-data" target="_self" onsubmit="return checkForm();">
.
.
.
.
<br>
<label for="txtDOB">Date of Birth:* </label>
<input id="txtDOB" type="text" name="txtDOB" size="12">
format: ##/##/####
<br>
.
.
.
</form>
.
.
Run Code Online (Sandbox Code Playgroud)
我在.js文件中执行了以下操作
var errMessage = "";
function checkForm() {
validateName();
validateSurname();
carSelect();
validateDOB();
if (errMessage == "") {
} else {
alert(errMessage);
}
}
...
function validateDOB()
{
var dob = document.forms["ProcessInfo"]["txtDOB"].value;
var pattern = /^([0-9]{2})-([0-9]{2})-([0-9]{4})$/;
if (dob == null || dob == "" || !pattern.test(dob)) {
errMessage += "Invalid date of birth\n";
return false;
}
else {
return true
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试检查它是否与正则表达式有效,但即使我正确输入日期,我总是会收到警报.我如何分离DD/MM/YYYY来计算年龄?
Dra*_*cir 21
如果要在格式中使用正斜杠,则需要使用正则表达式中的反斜杠进行转义:
var pattern =/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/;
Run Code Online (Sandbox Code Playgroud)
Bri*_*and 13
我建议使用moment.js,这提供了一个易于使用的方法来做到这一点.
function validate(date){
var eighteenYearsAgo = moment().subtract(18, "years");
var birthday = moment(date);
if (!birthday.isValid()) {
return "invalid date";
}
else if (eighteenYearsAgo.isAfter(birthday)) {
return "okay, you're good";
}
else {
return "sorry, no";
}
}
Run Code Online (Sandbox Code Playgroud)
要在页面中包含时刻,您可以使用CDNJS:
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.4.0/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
我会利用内置Date对象为我做验证.即使你切换-到/你仍然需要检查月份是否在0到12之间,例如,日期在0到31之间,年份在1900到2013之间.
function validateDOB(){
var dob = document.forms["ProcessInfo"]["txtDOB"].value;
var data = dob.split("/");
// using ISO 8601 Date String
if (isNaN(Date.parse(data[2] + "-" + data[1] + "-" + data[0]))) {
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果要在格式中使用正斜杠,则需要使用正则表达式中的反斜杠进行转义:
var dateformat = /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/;Run Code Online (Sandbox Code Playgroud)