使用 jQuery 验证 18 岁以上任何人的日期
Validate date for anyone over 18 with jQuery
我的网站上有一个表单,应该为18岁以上的任何人进行验证。
var day = $("#dobDay").val();
var month = $("#dobMonth").val();
var year = $("#dobYear").val();
var age = 18;
var mydate = new Date();
mydate.setFullYear(year, month-1, day);
var currdate = new Date();
currdate.setFullYear(currdate.getFullYear() - age);
var output = currdate - mydate
if ((currdate - mydate) > 0){
// you are not 18
}
但它的工作方式完全相反。我希望 if 语句在用户未满 18 岁时采取行动。
提前感谢您的帮助
检查这个演示
var day = 12;
var month = 12;
var year = 2006;
var age = 18;
var setDate = new Date(year + age, month - 1, day);
var currdate = new Date();
if (currdate >= setDate) {
// you are above 18
alert("above 18");
} else {
alert("below 18");
}
var day = $("#dobDay").val();
var month = $("#dobMonth").val();
var year = $("#dobYear").val();
var age = 18;
var mydate = new Date();
mydate.setFullYear(year, month-1, day);
var currdate = new Date();
currdate.setFullYear(currdate.getFullYear() - age);
if(currdate < mydate)
{
alert('You must be at least 18 years of age.');
}
这是我测试的一个更轻的版本:
var day = 1;
var month = 1;
var year = 1999;
var age = 18;
var cutOffDate = new Date(year + age, month, day);
if (cutOffDate > Date.now()) {
$('output').val("Get Outta Here!");
} else {
$('output').val("Works for me!");
}
关键是在出生日期中添加最低年龄,并确认它早于当前日期。您正在检查当前日期减去最低年龄(基本上是允许的最晚出生日期)是否大于提供的出生日期,这将给您相反的结果。
使用
addMethod函数的jQuery Validator插件的18年验证规则。
jQuery.validator.addMethod(
"validDOB",
function(value, element) {
var from = value.split(" "); // DD MM YYYY
// var from = value.split("/"); // DD/MM/YYYY
var day = from[0];
var month = from[1];
var year = from[2];
var age = 18;
var mydate = new Date();
mydate.setFullYear(year, month-1, day);
var currdate = new Date();
var setDate = new Date();
setDate.setFullYear(mydate.getFullYear() + age, month-1, day);
if ((currdate - setDate) > 0){
return true;
}else{
return false;
}
},
"Sorry, you must be 18 years of age to apply"
);
和
$('#myForm')
.validate({
rules : {
myDOB : {
validDOB : true
}
}
});
如果它以相反的方式工作,您是否尝试过将>
换成倒数第二行的<
?
我认为如果我们重命名变量会更容易理解
mydate => givenDate
当前日期 => 阈值日期
如果给定日期>阈值日期 =>则您不是 18
否则=>你18岁
即
if ( givenDate > thresholdDate ){
// you are not 18
}
即
if ((givenDate - thresholdDate) > 0){
// you are not 18
}
即
if ((mydate - currdate ) > 0){
// you are not 18
}
相关文章:
- 比较从函数和生成的日期对象
- Json数据包含日期和时间格式
- Javascript日期格式类似于ISO,但本地
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 如何在JavaScript中延长当前日期
- 两位数的月份日期验证
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- NodeJS日期格式不起作用
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- 使用当前日期生成随机id
- primefaces日历可以禁用过去的日期和时间吗
- 提前阅读日期
- 在JavaScript中拆分日期字符串的更好方法是什么
- 查找最短和最长日期
- 将日期和时间转换为UTC格式的日期-Javascript
- jquery日期选择器年份范围默认值
- 日期选择器不适用于我的 jsf 和 xhtml 文件,任何人都可以指导我
- 使用 jQuery 验证 18 岁以上任何人的日期