验证日期输入格式
要确保用户输入日期的有效性,首先要验证用户输入的日期是否合法,以此来有效提高程序的执行速度,在这个例子中文本框输入“2017-02-29”,单击“提交”按钮后,将实现验证日期
需要注意一下几点:
1.首先需要从输入的字符串中提取出年份,月份和日;并判断输入的年份,月份和日份是否大于0的数字,然后将月份和日中小于10的数字格式化为长度为2的字符串(在其前面填充0)。
2.将提取并格式化后的年份,月份和日重新组合,使其组合为“YYYY-MM-DD”格式的字符串,并判断新组合的字符串长度是否为10.
3.判断输入年份是否为闰年,从而判断2月份的天数(判断输入的年份是否为闰年,从而判断2月份的天数)。
4.根据1,3,5,7,8,10,12月份为31天,其他月份为30天的原则,判断除2月份以外的月份的天数是否正确。
5.判断月份是否大于12
其中还应用了正则表达式来判断日期的基本格式,正则表达式语法如下:/(\d{4}-)(\d{2}-)(\d{2})$/;
应用JavaScript编写验证码输入的日期格式是否正确的checkdata()代码如下:
<script> // 判断输入的日期是否正确 function checkdata(data){ if(data==""){ return true; } subYY=data.substr(0,4) if(isNaN(subYY)||subYY<=0){ return true; } // 转换月份 if(data.indexOf('-',0)!=-1){ separate="-" }else{ return true; } area=data.indexOf(separate,0) subMM=data.substr(area+1,data.indexOf(separate,area+1)-(area+1)) if(isNaN(subMM)||subMM<=0){ return true; } if(subMM.length<2){ subMM="0"+subMM } // 转换日 area=data.lastIndexOf(separate) subDD=data.substr(area+1,data.length-area-1) if(isNaN(subDD)||subDD<=0){ return true; } if(eval(subDD<10)){ subDD="0"+eval(subDD) } NewDate=subYY+"-"+subMM+"-"+subDD // alert(NewDate); if(NewDate.length!=10){ return true; } if(NewDate.substr(4,1)!="-"){ return true; } if(NewDate.substr(7,1)!="-"){ return true; } var MM=NewDate.substr(5,2); var DD=NewDate.substr(8,2); if((subYY%4==0&&subYY%100!=0)||subYY%400==0){//判断是否为闰年 if(parseInt(MM)==2){//闰年的二月份 if(DD>29){ return true; } } }else{ if(parseInt(MM)==2){//非闰年的二月份 if(DD>28){ return true; } } } var mm=new Array(4,6,9,11);//判断每月中最大天数是30或者31 for(i=0;i<mm.length;i++){ if(parseInt(MM)==mm[i]){ if(parseInt(DD)>30){ return true; } }else{ if(parseInt(DD)>31){ return true; } } }if(parseInt(MM)>12){ return true; } return false; }
应用JavaScript脚本编写一个checkdata函数,并通过正则表达式验证用户输入的日期格式是否正确
function checkdata1(data){ var str=data; // 在JavaScript中正则表达式只能通过使用"/"开头和结束,不能使用双引号 // 匹配字符串中的指定位数,(\d{2}$表明以两个数字结尾 var expression=/(\d{4}-)(\d{2}-)(\d{2})$/; var objExp=new RegExp(expression); if(objExp.test(str)==true){ return true; }else{ return false; } }
编写自定义的JavaScript函数check(),用于在提交表单前判断用户输入是否合法,在该函数中再调用checkdata()和checkdata1,判断输入的日期是否正确,如果不正确则给予提示,否则提交表单。
function check(){ if(form.data.value==""){ alert("请输入正确的日期"); form.data.focus();return false; } if(!checkdata1(form.data.value)||form.data.value.length!=10){ alert("你输入的基本格式不对"); form.data.focus();return false; } if(checkdata(form.data.value)){ alert("你输入的日期不正确(如:1920-07-17)\n 请注意闰年!"); form.data.focus(); return false; } } </script>
最后是输入框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="" name="form" onsubmit="return check()"> <input type="text" name="data"> <input type="submit" name="submit" value="提交"> <input type="reset" name="reset" value="重置"> </form> </body> </html>