0

我在 HTML 的文本框中有一个出生日期,例如 12-08-1989。我想在 javascript 中验证用户必须年满 18 岁。

我在 javascript 中使用了 Date 函数,但它似乎接受 YYYY-MM-DD 格式,但我想在 DD-MM-YYYY 中进行验证。

我怎样才能做到这一点?

4

4 回答 4

2
var pattern =/^([0-9]{2})-([0-9]{2})-([0-9]{4})$/;
if(pattern.test(str_input_date))
{
     alert("valid date");
}

这应该给你一个开始。:)

于 2012-05-22T05:45:39.443 回答
1

您可能应该使用一些验证框架,例如jQuery.validation。这是迄今为止在代码中处理验证的更加一致的方式。如果这是您的应用程序中唯一经过验证的字段,您当然可以使用上面提供的简单实现。

无论您需要一些高级日期验证规则,您都可以使用 JS 日期框架,例如Moment.js(或Date.js,目前已经过时)。

于 2012-05-22T05:58:01.003 回答
0

“我在 javascript 中使用过 Date 函数,但它似乎接受 YYYY-MM-DD 格式,但我想在 DD-MM-YYYY 中验证”

您可以通过分别传递年、月和日(以及可选的小时、分钟、秒和毫秒)值来创建 Date 对象:

var aDate = new Date(2012, 5, 22);

因此,如果您使用正则表达式或其他字符串方法从用户输入的内容中提取片段,那么您可以根据您喜欢的 DD-MM-YYYY(或任何其他)格式创建日期。

我测试用户是否至少 18 岁的方法是在他们的出生日期上加上 18 年,看看是不是在今天的日期或之前:

aDate.setFullYear( aDate.getFullYear() + 18 )

在 MDN中列出了 Date 对象上可用的各种方法。

于 2012-05-22T06:21:43.317 回答
0

你可以使用日期类,就像这样

try{
    var x=new Date('1/1/2001');
    var Cnow=new Date();//current Date
    if(Cnow.getFullYear()- x.getFullYear()<18){
    alert('not old enough');
    }
    else{
      //success !!!
    }

}
catch(ejs){alert('invalid')}
于 2012-05-22T05:48:01.773 回答