当前位置: 首页 > 图文教程 > 网络编程 > ASP > 表单递交合法性检测-日期

ASP
对连串英文自动换行的解决方法 IE5.5
怎样写你自己的EMAIL组件(原理)
ASP中有关timeout超时的体会
用ASP实现从SQL Server导出数据到Access
ASP向NT域中加一个用户
ASP乱码的解决方法
关于 aspsmartupload 注册问题
利用XML不离开页面刷新数据
IIS 处理 SEARCH 请求漏洞
不用组件实现上载功能(1)
不用组件实现上载功能(2)
在网页中实现OICQ里的头像选择的下拉框
仅用xsl和asp实现分页功能
如何使用context()方法将数据置入表格(XML)
利用ASP从远程服务器上接收XML数据
将数据库里面的内容生成EXCEL
怎样在ASP里面创建统计图表
加密你的Access数据库
利用global.asp定时执行ASP
加密QueryString数据

ASP 中的 表单递交合法性检测-日期


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 176 ::
收藏到网摘: n/a

  <html>
<head>
<script Language="JavaScript">
<!--
function testKey(e){
chars= "0123456789/";
e = window.event;
if(chars.indexOf(String.fromCharCode(e.keyCode))==-1) window.event.keyCode=0;
};
function valDate(M, D, Y){
Months= new Array(31,28,31,30,31,30,31,31,30,31,30,31);
Leap = false;

if((Y % 4 == 0) && ((Y % 100 != 0) || (Y %400 == 0)))
Leap = true;
if((D < 1) || (D > 31) || (M < 1) || (M > 12) || (Y < 0))
return(false);
if((D > Months[M-1]) && !((M == 2) && (D > 28)))
return(false);
if(!(Leap) && (M == 2) && (D > 28))
return(false);
if((Leap) && (M == 2) && (D > 29))
return(false);
};

function formatDate(dateForm){
cDate = dateForm.value;
dSize = cDate.length;
sCount= 0;

if (document.Form1.Date.value == ""){
alert("请输入日期!");
return false ;
}

if(cDate=='') return;

for(var i=0; i < dSize; i++)
(cDate.substr(i,1) == "/") ? sCount++ : sCount;
if (sCount != 2){
alert("输入的日期格式必须是\n ''月/日/年''");
dateForm.select();
return(false);
};
//检测输入的年份是2位数还是4位数;
ySize = cDate.substring(cDate.lastIndexOf("/")+1,dSize).length
if(ySize<2 || ySize>4 || ySize == 3){
alert('您输入的日期错误 !');
dateForm.select();
return false;
};
//将输入的日期字符串分隔成3部分 (Month, Day & Year)
idxBarI = cDate.indexOf("/");
idxBarII= cDate.lastIndexOf("/");
strM = cDate.substring(0,idxBarI);
strD = cDate.substring(idxBarI+1,idxBarII);
strY = cDate.substring(idxBarII+1,dSize);

strM = (strM.length < 2 ? '0'+strM : strM);
strD = (strD.length < 2 ? '0'+strD : strD);
if(strY.length == 2)
strY = (strY > 50 ? '19'+strY : '20'+strY);
dateForm.value = strM+'/'+strD+'/'+strY;

ok = valDate(strM, strD, strY);
if(ok==false){
alert("您输入的日期错误 !");
dateForm.select();
return false;
};
};


-->
</script>

<title>日期合法性检测</title>
</head>
<body onLoad="javascript:document.Form1.Date.focus()" bgcolor="#FFFFFF">


<form name="Form1" method="post" onSubmit="return testKey(event)" action="">
输入正确的日期(月/日/年):
<input type=text maxlength =10 name="Date" size=10 onBlur="formatDate(this)" value="">

</form>
</body>
</html>

说明:此脚本的用途是比较全面地检测输入日期的合法性,除了做非空检测外,还有效地检测了不同年月日期的合法性问题。比如在不是闰年的2月输入了29日等。黄色代码与脚本的检测无关,作用是页面读出页面后光标停留在日期文本框内。可以不要。

注意:(1)<Form>标签中表单的名字Form1和日期文本框的名字Data(加重字体)与脚本是有关的,也就是说你如果改动了它们的名字,凡是在脚本中引用From1和Data的部分都要修改。切切!!!

(2)Javascript是大小写敏感的,所以注意大小写的区别和一致性原则。

(3)此脚本应该与CGI/ASP等服务器端的递交处理程序配合使用,用于客户端的合法性检测。本例没有将submit按钮作上去,你所处理的表单中可能包括更多的内容。

这里仅仅提供了一个脚本思路,你不一顶非要全部照搬脚本,可以仅仅取脚本的一部分使用(主要是算法)。