日期验证问题

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

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

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

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



js文件代码: 


____________________________________________________________________________________ 


function fob(n, d) 

   var p,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);  
   return x; 
}  
function checkdate(inpar) 

 var flag=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 
 { 
   var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年 
   // 下面操作获得月份 
   var transition_month=getdate.substr(0,getdate.lastIndexOf('-'));  
   var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length); 
   if (month.indexOf('0')==0) 
   { 
      month=month.substr(1,month.length); 
   } 
   // 下面操作获得日期 
   var day=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("您输入的日期不合法!"); 
   return false; 





function checktime(inpar) 

 var flag=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 
 { 
   var year=getdate.substr(0,getdate.indexOf('-'))  // 获得年 
   // 下面操作获得月份 
   var transition_month=getdate.substr(0,getdate.lastIndexOf(' '));  
   transition_month=getdate.substr(0,getdate.lastIndexOf('-'));  
   var month=transition_month.substr(transition_month.lastIndexOf('-')+1,transition_month.length); 
   if (month.indexOf('0')==0) 
   { 
      month=month.substr(1,month.length); 
   } 
   // 下面操作获得日期 
   var transition_day=getdate.substr(0,getdate.lastIndexOf(' '));  
   var day=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("您输入的日期不合法!"); 
   return false; 



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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值