我正在对司机的出生日期进行验证,它应该是当前日期的最低值。
var Dates = $get('<%=ui_txtDOB.ClientID %>');
var Split = Dates.value.split("/");
if (parseInt(Split[2]) > 1993)
{
alert("DOB year should be less than 1993");
Dates.focus();
return false;
}
我正在使用上面的JavaScript验证来检查18岁以上的人的DOB,但这是不正确的。我需要查看今天的日期,它应该在18以上。我如何比较和检查当前日期?
答案 0 :(得分:12)
答案 1 :(得分:7)
试试这个。
var enteredValue = $get('<%=ui_txtDOB.ClientID %>');;
var enteredAge = getAge(enteredValue.value);
if( enteredAge > 18 ) {
alert("DOB not valid");
enteredValue.focus();
return false;
}
使用此功能。
function getAge(DOB) {
var today = new Date();
var birthDate = new Date(DOB);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
答案 2 :(得分:2)
<script>
function dobValidate(birth) {
var today = new Date();
var nowyear = today.getFullYear();
var nowmonth = today.getMonth();
var nowday = today.getDate();
var b = document.getElementById('<%=TextBox2.ClientID%>').value;
var birth = new Date(b);
var birthyear = birth.getFullYear();
var birthmonth = birth.getMonth();
var birthday = birth.getDate();
var age = nowyear - birthyear;
var age_month = nowmonth - birthmonth;
var age_day = nowday - birthday;
if (age > 100) {
alert("Age cannot be more than 100 Years.Please enter correct age")
return false;
}
if (age_month < 0 || (age_month == 0 && age_day < 0)) {
age = parseInt(age) - 1;
}
if ((age == 18 && age_month <= 0 && age_day <= 0) || age < 18) {
alert("Age should be more than 18 years.Please enter a valid Date of Birth");
return false;
}
}
</script>
答案 3 :(得分:1)
let TODAY = new Date(Date.now());
let EIGHTEEN_YEARS_BACK = new Date(new Date(TODAY).getDate() + "/" + new Date(TODAY).getMonth() + "/" + (new Date(TODAY).getFullYear() - 18));
let USER_INPUT = new Date("2003/12/13");
// Validate Now
let result = EIGHTEEN_YEARS_BACK > USER_INPUT // true if over 18, false if less than 18
我认为这是最接近的检查方法。
答案 4 :(得分:0)
在查看了各种方法之后,我决定最简单的方法是将日期编码为8位整数。然后,您可以从DOB代码中减去今天的代码,并检查它是否大于或等于180000。
function isOverEighteen(year, month, day) {
var now = parseInt(new Date().toISOString().slice(0, 10).replace(/-/g, ''));
var dob = year * 10000 + month * 100 + day * 1; // Coerces strings to integers
return now - dob > 180000;
}
答案 5 :(得分:0)
const isOver18 = (year, month, day) => {
const nowDate = new Date();
nowDate.setFullYear(nowDate.getFullYear() - 18) // nowDate set before 18 years
return nowDate >= new Date(year, month - 1, day);
}
console.log(isOver18(1995, 4, 18))
答案 6 :(得分:0)
我的方法是查找距今天18年前(或任意数字)的日期,然后查看该日期是否比其日期晚(更大)。通过将所有值设置为日期对象,可以轻松进行比较。
function is_of_age(dob, age) {
// dates are all converted to date objects
var my_dob = new Date(dob);
var today = new Date();
var max_dob = new Date(today.getFullYear() - age, today.getMonth(), today.getDate());
return max_dob.getTime() > my_dob.getTime();
}
由于Date对象可以解析各种格式的字符串,因此您不必太担心dob的来源。只需调用is_of_age(“ 1980/12/4”,18);或is_of_age(“ 2005-04-17”,13);或基本上可以解析为Date参数的任何字符串格式或数字。