7

我在我的网站上有一个表格,可以验证 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 岁时采取行动。

提前谢谢你的帮助

4

6 回答 6

11

检查这个 演示

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");
}

于 2013-09-23T10:37:16.957 回答
4
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.');
}
于 2013-09-23T10:38:20.737 回答
3

这是我测试过的一个更轻的版本:

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!");
}

关键是将最小年龄添加到生日并确认它在当前日期之前。您正在检查当前日期减去最小年龄(基本上是允许的最新出生日期)是否大于提供的出生日期,这将为您提供相反的结果。

于 2013-09-23T10:57:35.717 回答
3

使用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
                }
            }
        });
于 2017-07-14T06:52:42.807 回答
0

如果它以相反的方式工作,您是否尝试在倒数第二行交换>a ?<

于 2013-09-23T10:29:09.230 回答
0

我认为如果我们重命名变量会更容易理解

mydate => givenDate
currdate => thresholdDate

如果 givenDate > thresholdDate => 你不是 18
否则 => 你是 18

IE

if ( givenDate > thresholdDate ){
    // you are not 18
}

IE

if ((givenDate - thresholdDate) > 0){
    // you are not 18
}

IE

if ((mydate - currdate ) > 0){
    // you are not 18
}
于 2013-09-23T10:52:03.253 回答