javascript月、日、年检查

javascript月、日、年检查,javascript,validation,date,Javascript,Validation,Date,我正在尝试检查MM/DD/YYYY 当前,当您输入0/0/0或00/00/0000时,我的脚本将失败。我正在尝试检查用户是否超过21岁,并且必须输入有效的两位数月、两位数日和4位数年 有什么建议吗 $("#gate-box").submit(function() { var day = $("#day").val(); var month = $("#month").val(); var year = $("#year").val(); var age = 2

我正在尝试检查MM/DD/YYYY

当前,当您输入0/0/0或00/00/0000时,我的脚本将失败。我正在尝试检查用户是否超过21岁,并且必须输入有效的两位数月、两位数日和4位数年

有什么建议吗

$("#gate-box").submit(function() {

    var day = $("#day").val();
    var month = $("#month").val();
    var year = $("#year").val();

    var age = 21;

    var mydate = new Date();
    mydate.setFullYear(year, month - 1, day);

    var currdate = new Date();
    currdate.setFullYear(currdate.getFullYear() - age);
    if ((currdate - mydate) < 0) {        
        $.msg("Sorry, you must be at least " + age + " to enter.");
        return false;
    }
    else if (month > 12) {
        $('#month').css({ 'border': '1px solid red' });
        $.msg("Please enter a valid month.");
        $('#month').focus();
        return false;
    }
    else if (day > 31) {
        $('#month').css({ 'border': 'none' });
        $('#day').css({ 'border': '1px solid red' });
        $.msg("Please enter a valid day.");
        $('#day').focus();
        return false;
    }
    else if (month.length === 0 || day.length === 0 || year.length === 0) {
        $('#day').css({ 'border': 'none' });
        $.msg("Please enter all fields.");
        return false;
    }

    if ((currdate - mydate) > 0) {
        $.colorbox.close()
        $.setCookie('diageoagecheck', 'verified', { duration: 3 });
    }
    return false;
});
$(“#门框”)。提交(函数(){
var day=$(“#day”).val();
var month=$(“#month”).val();
var year=$(“#year”).val();
年龄=21岁;
var mydate=新日期();
mydate.setFullYear(年,月-1,日);
var currdate=新日期();
currdate.setFullYear(currdate.getFullYear()-年龄);
如果((currdate-mydate)<0){
$.msg(“对不起,您必须至少“+age+”才能输入。”);
返回false;
}
否则,如果(月份>12){
$('#month').css({'border':'1px solid red'});
$.msg(“请输入有效月份”);
$(“#月”).focus();
返回false;
}
否则,如果(第31天){
$('#month').css({'border':'none'});
$(#day').css({“border”:“1px实心红色”});
$.msg(“请输入有效日期”);
$('日').focus();
返回false;
}
else if(month.length==0 | | day.length==0 | | year.length==0){
$('#day').css({'border':'none'});
$.msg(“请输入所有字段”);
返回false;
}
如果((currdate-mydate)>0){
$.colorbox.close()
$.setCookie('DiageAgeCheck','verified',{duration:3});
}
返回false;
});

您应该使用以下方法验证输入是否确实是数字,然后检查范围

抄袭

然后像这样使用它(在读取输入后)

if(!IsNumeric(day)| | day<1)
{/*在此处处理错误的日期并返回false*/}
如果(!IsNumeric(month)| | |(month<1)| |(month>12))
{/*在此处处理错误的月份并返回false*/}
如果(!IsNumeric(year)| |(year<1900)| |(year>2100))
{/*在此处处理错误的年份并返回false*/}
var lastDayOfMonth=新日期(年,parseInt(月)+1,-1);
如果(天>月的最后一天){
{/*在此处处理错误的年份并返回false*/}
}

您应该使用以下方法验证输入是否确实是数字,然后检查范围

抄袭

然后像这样使用它(在读取输入后)

if(!IsNumeric(day)| | day<1)
{/*在此处处理错误的日期并返回false*/}
如果(!IsNumeric(month)| | |(month<1)| |(month>12))
{/*在此处处理错误的月份并返回false*/}
如果(!IsNumeric(year)| |(year<1900)| |(year>2100))
{/*在此处处理错误的年份并返回false*/}
var lastDayOfMonth=新日期(年,parseInt(月)+1,-1);
如果(天>月的最后一天){
{/*在此处处理错误的年份并返回false*/}
}

在使用输入创建日期对象之前,请尝试验证输入。如何检查两位数的月份、两位数的日期和四位数的年份。当前,当您输入0/0/0或00/00/0000时,脚本将失败。请检查它们是否在(1-31)、(1-12)、(1900-2100)的可接受范围内。在使用它们创建日期对象之前,请尝试验证输入。如何检查两位数的月、两位数的日和四位数的年。当前,当您输入0/0/0或00/00/0000时,脚本将失败。请检查它们是否在(1-31)、(1-12)、(1900-2100)的可接受范围内。这不使用正确的日历并检查一个月内的天数。@TimothyGonzalez OP特别要求自己验证每个字段。可能OP问的问题不正确。如果你处理的是日期,你不能逃避这样一个事实:字段是相关的。它没有回答这个问题的意图,即确定年龄。如果我出生于2017年4月31日(2017年4月31日,一个不存在的日期),那么我多大了?@TimothyGonzalez在回复评论时回到了你之前的编辑。“>31”仍然存在获取错误日期的问题,即使JS允许,并将日期包装到下个月。这没有使用正确的日历和检查一个月内的日期。@TimothyGonzalez OP特别要求自己验证每个字段。也许OP问错了问题。如果你处理的是日期,你不能逃避这样一个事实:字段是相关的。它没有回答这个问题的意图,即确定年龄。如果我出生于2017年4月31日(2017年4月31日,一个不存在的日期),那么我多大了?@TimothyGonzalez在回复评论时回到了你之前的编辑。“>31”仍然存在错误日期的问题,即使JS允许,并将日期包装到下个月。
function IsNumeric(input)
{
   return (input - 0) == input && input.length > 0;
}
if (!IsNumeric(day) || day < 1) 
    {/*handle wrong day here and return false*/}
if (!IsNumeric(month) || (month < 1) || (month > 12)) 
    {/*handle wrong month here and return false*/}
if (!IsNumeric(year) || (year < 1900) || (year > 2100)) 
    {/*handle wrong year here and return false*/}

var lastDayOfMonth = new Date(year, parseInt(month) + 1, -1).getDate();
if (day > lastDayOfMonth) {
    {/*handle wrong year here and return false*/}
}