如何设置登记表的出生日期验证?
我试着将输入的日期与当前日期进行比较,但没有成功。
if (date("d/m/y") > $dob){
echo "impossible";
}
或者更好的是,我如何才能让用户无法选择尚未到来的日期。
此外,我如何比较不允许12岁以下的人加入我的网站的日期?
现在在HTML5中,您可以将日期类型的输入设置为最小值和最大值。如下:
<input type="date" min="2013-10-01" max="2013-10-20">
现在,如果您希望将最大日期设置为当前日期,那么您可以从PHP date
函数或javascript Date
函数中获取当前日期。
但是,如果你想添加客户端验证,你必须添加一些类似于用PHP编写的逻辑。为了使其发挥作用,您可以使用Carbon
库轻松比较两个日期。
https://jqueryui.com/datepicker/#min-最大
请检查此链接。
它是一个Jquery模块,在那里您可以限制最小日期甚至最大日期。
有很多选择。请阅读文档。
根据您的表单输入,您的$dob
变量可能由en_US用户使用,这些用户按mm/dd/yyyy填写。正如您所说的dd/mm/yyyy
,最好根据您的需要将该表单拆分为三个值
现在,您想检查日期是否还没有到来,在此之前,请检查日期变量是否在($day > 0 && $day <= 31) && $month > 0 && $month <= 12 && $year >= 0 && $year <= date('Y')
之间,因为现在您可以将这些数字格式化为unix时间戳,以查看数字是否已经过去。
<?php
$date = new DateTime("$year-$month-$day");
echo $date->getTimestamp() > time() ? 'use submitted a date in the future' : 'user submitted a date in the past';
// keep in mind that any date before 31/12/1899 will not work.
?>
请使用此函数:
function isAdult(day, month, year) {
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;
return false;
}
var dob = new Date("1980-12-01");
if( isAdult(dob.getDate(), dob.getMonth()+1, dob.getFullYear()) ) {
console.log("Adult")
}
我设法做到了这一点,因为我不想对这个使用jquery
if (isset($_POST['button'])){
$dob = $_POST['dob'];
echo $dob."<br>".date("o-m-d");
if (date("o-m-d") < $dob){
echo "<br>invalid dob";
} else echo "<br>valid dob";
}
当我选择2016年1月31日时,脚本给出
2016-01-31
2016-01-09
invalid dob