日期验证问题

日期验证问题...(正则表达式加javascript) [ 日期:2004-04-05 ][ 来自:dotnet中华网 ] [收藏此页]

程序代码:
1.使用日期选择器,很多朋友做了日期选择器,光我都提供了两个,我觉得这种方法是最好的,因为免去了判断日期的问题.

2.使用.net自带的验证控件,呵呵,是使用正则表达式,我觉得是不完善的,比如2月份不可能存在31,30号.

3.javascript脚本做判断,下面是本人花了一个钟头写的日期验证,是比较完善的验证,可以判断闰年等,里面有两个主要函数,其中checkdate是判断日期,比如2002-02-09,checkdate是判断带时间日期,比如2002-02-0912:09:09,做验证的时候,比如确定按钮为Button1,应在Page_Load函数加上Button1.Attributes.Add("onclick","return('txt_Date');");



js文件代码:


____________________________________________________________________________________


functionfob(n,d)
{
varp,i,x;if(!d)d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length)
{
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n])&&d.all)
x=d.all[n];
for(i=0;!x&&i<d.forms.length;i++)
x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++)
x=fob(n,d.layers[i].document);
returnx;
}
functioncheckdate(inpar)
{
varflag=true;
getdate=fob(inpar).value;
if(getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[1-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])$/)==-1)//判断输入格式时候正确
{
flag=false;
}
else
{
varyear=getdate.substr(0,getdate.indexOf('-'))//获得年
//下面操作获得月份
vartransition_month=getdate.substr(0,getdate.lastIndexOf('-'));
varmonth=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length);
if(month.indexOf('0')==0)
{
month=month.substr(1,month.length);
}
//下面操作获得日期
varday=getdate.substr(getdate.lastIndexOf('-')+1,getdate.length);
if(day.indexOf('0')==0)
{
day=day.substr(1,day.length);
}
flag=true;
}
if((month==4||month==6||month==9||month==11)&&(day>30))//4,6,9,11月份日期不能超过30
{
flag=false;
}
if(month==2)//判断2月份
{
if(LeapYear(year))
{
if(day>29||day<1){flag=false;}
}
else
{
if(day>28||day<1){flag=false;}
}
}
else
{
flag=true;
}

if(flag==false)
{
alert("您输入的日期不合法!");
returnfalse;
}
}



functionchecktime(inpar)
{
varflag=true;
getdate=fob(inpar).value;
if(getdate.search(/^[0-9]{4}-(0[1-9]|[1-9]|1[1-2])-((0[1-9]|[1-9])|1[0-9]|2[0-9]|3[0-1])((0[1-9]|[1-9])|1[0-9]|2[0-4]):((0[1-9]|[1-9])|[1-5][0-9]):((0[1-9]|[1-9])|[1-5][0-9])$/)==-1)//判断输入格式时候正确
{
flag=false;
}
else
{
varyear=getdate.substr(0,getdate.indexOf('-'))//获得年
//下面操作获得月份
vartransition_month=getdate.substr(0,getdate.lastIndexOf(''));
transition_month=getdate.substr(0,getdate.lastIndexOf('-'));
varmonth=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length);
if(month.indexOf('0')==0)
{
month=month.substr(1,month.length);
}
//下面操作获得日期
vartransition_day=getdate.substr(0,getdate.lastIndexOf(''));
varday=transition_day.substr(transition_day.lastIndexOf('-')+1,transition_day.length);
if(day.indexOf('0')==0)
{
day=day.substr(1,day.length);
}
flag=true;
}
if((month==4||month==6||month==9||month==11)&&(day>30))//4,6,9,11月份日期不能超过30
{
flag=false;
}
if(month==2)//判断2月份
{
if(LeapYear(year))
{
if(day>29||day<1){flag=false;}
}
else
{
if(day>28||day<1){flag=false;}
}
}
else
{
flag=true;
}

if(flag==false)
{
alert("您输入的日期不合法!");
returnfalse;
}
}

//判断是否闰年
//参数intYear代表年份的值
//returntrue:是闰年false:不是闰年
functionLeapYear(intYear){
if(intYear%100==0){
if(intYear%400==0){returntrue;}
}
else{
if((intYear%4)==0){returntrue;}
}
returnfalse;
}

你可能感兴趣的:(JavaScript,.net,正则表达式,脚本)