我有以下代码,使用格式mm / dd / yyyy ...
var required = "";
var dob = $("#txtDOB").val();
if (dob != "") {
var myDate = new Date(dob);
var today = new Date();
var maxDOB = new Date("01/01/1900");
if (myDate > today || myDate < maxDOB) {
required += "Invalid Birth Date \n";
}
}
如果用户输入22/22/1982,则没有错误。我该如何验证?
答案 0 :(得分:3)
尝试Datejs - An open-source JavaScript Date Library
Date.parse("22/22/1982")
返回null
这需要一点额外开销@~25 kb但是当你需要使用日期时它很强大
答案 1 :(得分:1)
您不想要AND运算符(&&
)而不是OR(||
)吗?
if (myDate > today || myDate < maxDOB) {
答案 2 :(得分:1)
String.prototype.isValidDate = function(){
var arrDate = this.split("/");
if(arrDate.length!=3)return false;
var dateComp = new Date(arrDate[2], arrDate[0]-1, arrDate[1]);
return (arrDate[0] == dateComp.getMonth()+1 &&
arrDate[1] == dateComp.getDate() &&
arrDate[2] == dateComp.getFullYear());
};
答案 3 :(得分:0)
function validMdy(str){
var d, A= str.split(/\D+/);
if(A[0]> 12) throw 'bad Month';
d= new Date(A[2], A[0], 0);
// expects month 1-12
if(d.getDate()<A[1]) throw 'bad Date';
return new Date(A[2], A[0]-1, A[1]);
}
var s= "22/22/1982"; // "2/29/2011"
validMdy(s)
答案 4 :(得分:0)
我设法使用if(dob.match(re))的正则表达式日期(mm / dd / yyyy)。我得到了一些很好的答案,但它们比我想要的要复杂一些。
var required = "";
var dob = $("#txtDOB").val();
var re = /^((0[0-1]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/]([0-9]{2}|[0-9]{4}))$/;
if (dob != "") {
if (dob.match(re)) {
var myDate = new Date(dob);
var today = new Date();
var maxDOB = new Date("01/01/1900");
if (myDate > today || myDate < maxDOB) {
required += "Invalid Birth Date \n";
}
}
else { required += "Invalid Date Format \n"; }
}