javascript月、日、年检查
我正在尝试检查MM/DD/YYYY 当前,当您输入0/0/0或00/00/0000时,我的脚本将失败。我正在尝试检查用户是否超过21岁,并且必须输入有效的两位数月、两位数日和4位数年 有什么建议吗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
$("#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*/}
}