JavaScript 表单验证日期

我想做一个可以验证日期的表单就是把用户填入的年月日和系统当前的年月日进行计算如果小于18周岁的则要弹出窗口提示错误要精确到天数求高手给代码高分悬赏在网页中出生年月日只有一... 我想做一个可以验证日期的表单 就是把用户填入的年月日和系统当前的年月日进行计算 如果小于18周岁的则要弹出窗口提示错误 要精确到天数 求高手给代码 高分悬赏
在网页中出生年月日只有一个空可以填入
展开
 我来答
匿名用户
推荐于2017-08-26
展开全部
JavaScript 表单验证日期
function checkDate(obj) //判断日期格式是不是符合 { var strDate=thedate.value; re=/\d{4}\/\d{2}\/\d{2}/g if(re.test(strDate)) //判断日期格式符合YYYY/MM/DD标准 { var DateArray=strDate.split("/"); var dateElement=new Date(DateArray[0],parseInt(DateArray[1])-1,DateArray[2]); if (!((dateElement.getFullYear()==parseInt(DateArray[0]))&&((dateElement.getMonth ()+1)==parseInt(DateArray[1]))&&(dateElement.getDate()==parseInt(DateArray [2])))) //判断日期逻辑 { alert("不符合时间逻辑") obj.value=''; } else { alert("正确") } } else { alert("格式输入错误") thedate.value=''; } }
百度网友3b05ca1c6
2010-04-07 · 超过18用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:41.4万
展开全部
我写JavaScript不熟,但你解决这个问题的思路是很简单的。
设出生日是birth(y, m, d)
当前日是current(y, m, d)

定义一个减法,
(y1, m1, d1) - (y2, m2, d2) = (y1 - y2, m1 - m2, d1 - d2)
当右边的日是负数,就从月份里“借”1, 当月份出现负数,就从年里“借”1. 最后的得到的年份数,就是周岁数字了。

如:某人生日是 (1992, 05, 04),当前日期是(2010, 04, 07) 做上面的减法:
(2010, 04, 07) - (1992, 05, 04)
= (18, -1, 3)
= (17, 11, 3)
周岁:17

再比如:某人的生日是 (1989, 06, 04),则它的周岁是:
(2010, 04, 07) - (1989, 06, 04)
=(21, -2, 3)
=(20, 10, 3)
周岁:20

具体写代码时,日期每月是变化的,需要深化思考。

希望上面的描述能为你提供一定参考和帮助。

注:楼上paperstudio的思路有些不对,因为每年的长度,不一定是一样的,平年365天,闰年366天。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dc81944bb
2010-04-07 · TA获得超过572个赞
知道小有建树答主
回答量:793
采纳率:0%
帮助的人:726万
展开全部
<html>
<script type="text/javascript">
function checkdata(){
var userbd = document.getElementById("userbirday_text").value;
var nowdate = new Date();
var nowYear = nowdate.getYear();
var after18Date = new Date(nowYear-18,parseInt(nowdate.getMonth())+1,nowdate.getDate(),"00","00","00","000")
var temp = userbd.split("-");
var userdata = new Date(temp[0],temp[1],temp[2],"00","00","00","000");
if(userdata>after18Date){
alert("18禁");
}else{
alert("成年啦!");
}

}
</script>
<input type="text" id="userbirday_text" value="1992-04-08" />
<input type="button" value="验证" onclick=checkdata() />
<br>我没有作日期格式检查,自己写吧

</html>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
paperstudio
2010-04-07 · TA获得超过543个赞
知道小有建树答主
回答量:762
采纳率:0%
帮助的人:425万
展开全部
虽然算法简单,但是意义不大。
你既然和系统时间对比,这样的话,他只要修改系统时间就可以了。
这个东西还得获取后台系统时间才行。

主要算法是把时间都换算成秒,然后求出秒的差值,再把秒换算成天,就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
simlinkwx
2010-04-07 · TA获得超过1331个赞
知道小有建树答主
回答量:308
采纳率:0%
帮助的人:572万
展开全部
改了一下,这样行不?
<HTML>
<HEAD>
</HEAD>
<BODY>
格式:yyyy-MM-dd<br>
<input type="text" id="date" size="20">
<input type="button" value="ok" onclick="check()">
</BODY>
<script>
function check(){
var arr=document.getElementById('date').value.split('-');
var date=new Date();
date.setFullYear(parseInt(arr[0])+18,arr[1]-1,arr[2]);
if(new Date()<date)
alert("未满18岁");
}
</script>
</HTML>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式