我正在验证驾驶员的出生日期,它应该是从当前日期的最低18。
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岁以上,但它不正确。我需要检查今天的日期,它应该在18岁以上。我如何比较和检查当前的日期?
9条答案
按热度按时间bbuxkriu1#
我认为一个更好的选择是计算用户的年龄,并在if语句中使用它。
看看这个关于如何做到这一点的答案:
Calculate age in JavaScript
8fsztsew2#
试试这个.
字符串
使用此功能。
型
在此演示:http://jsfiddle.net/codeandcloud/n33RJ/
2g32fytz3#
在研究了各种方法之后,我决定最简单的方法是将日期编码为8位整数,然后从DOB代码中减去今天的代码,并检查它是否大于或等于180000。
字符串
6ljaweal4#
我的方法是找到从今天算起18年(或任何数字)前的日期,然后看看这是否在他们的dob之后(大于)。通过将所有值设置为date对象,它使比较变得容易。
字符串
因为Date对象可以解析各种格式的字符串,所以你不必太担心dob是从哪里来的。只需调用is_of_age(“1980/12/4”,18);或is_of_age(“2005-04-17”,13);或基本上任何可以解析为Date参数的字符串格式或数字。
dl5txlt95#
字符串
nvbavucw6#
字符串
我想这是最接近的检查方法了。
bjp0bcyl7#
您可以使用以下:
字符串
k5ifujac8#
我最喜欢的方法是这样的:
字符串
k0pti3hp9#
找不到任何简单的解决方案,实际上它应该工作,它不是某种矫枉过正(换句话说,有高“认知复杂性”),也计算
age
代替(因为它是在接受的答案)不是一个选项,在我的情况下。弄清楚这样的事情:
字符串
为什么
new Date()
用了3次?new Date().getFullYear() - yearsAgo
-仅返回年份(例如2005
),我的引导也传递yearsAgo - 1
(例如17 yo可能按年份有效,即使他们今年还没有生日)。new Date().setFullYear(...)
-这将基本上改变当前日期的年份,但此操作的返回将在milliseconds
中。1.(可选)
new Date(...)
-将milliseconds
解析为Date
对象,这将导致日期确切n
年前(n
是我们的yearsAgo
)。使用普通
JS
验证:型
使用
Zod
(docs)验证:型