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

<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 bgcolor="#FFFFFF">

<form name="Form1" method="post" 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按钮作上去,你所处理的表单中可能包括更多的内容。

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

时间: 2024-09-21 01:48:19

表单递交合法性检测-日期的相关文章

表单递交合法性检测 - 只接受数字

如下代码加入HTML的<head>区: <SCRIPT LANGUAGE="JavaScript"> function numericCheck(){ nr1=document.myform.content.value; flg=0; str=""; spc="" arw=""; for (var i=0;i<nr1.length;i++){ cmp="0123456789"

表单递交合法性检测-Email

以下代码加入HTML的<body>区: <script language="javascript"> <!-- Begin function chk(email, formname) { invalid = ""; if (!email) invalid = "请输入您的Email地址."; else { if ( (email.indexOf("@") == -1) || (email.inde

表单递交合法性检测-只允许填写字母

<script language="JavaScript"> <!-- function CheckForm() { if (document.form.yourname.value == "" ) { alert ("请输入姓名!"); return false; } var Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" for (i=0; i < document.f

表单递交合法性检测-不允许指定字符

<SCRIPT LANGUAGE="JavaScript"> <!--// function validate(){ var invalid = " "; //非法字符是空格你可以改为其它字符或数字if (document.submitform.filename.value.indexOf(invalid) > -1) { alert("文件名不能含有空格!"); return false; } else { return

有检测功能的表单递交脚本

提示:您可以先修改部分代码再运行 有检测功能的表单递交脚本    当你按下发送按钮发送这个表单时,脚本程序会对你是否正确填写进行检测,这是现在比较流行的一种表单递交方式. 有内容检测功能的表单递交 姓名: 电子信箱: 主页地址: (必须以 http://开头) 你的建议/你要说的话: 提示:您可以先修改部分代码再运行

jquery实现-JQUERY实现提交表单时的检测

问题描述 JQUERY实现提交表单时的检测 点击提交,验证表单中是否变更类型中有新建类型,如有新建类型的,检测是否上传模板文件,如果上传正常提交,如果没有上传,弹框提醒"请上传模版文件",提交失败. 解决方案 请参考这篇文章"jQuery插件之ajaxFileUpload",http://www.mskj.cc/article/100/204.htm 解决方案二: 这个和jquery没什么关系,都是要自己写js代码来实现检查 想偷懒就用jquery的validate

E-mail表单递交_ASP基础

<HTML><HEAD><META http-equiv='Content-Type' content='text/html; charset=gb2312'><TITLE>E-mail表单递交</TITLE></HEAD><BODY > <script language="JavaScript"><!--function validate_form() { validity = tr

E-mail表单递交

<HTML><HEAD><META http-equiv='Content-Type' content='text/html; charset=gb2312'><TITLE>E-mail表单递交</TITLE></HEAD><BODY > <script language="JavaScript"><!--function validate_form() { validity = tr

PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法_php技巧

最近在做公司项目的时候,发现一个奇怪的问题,递交一个正常表单,竟然发现不能正常获取到递交的值,这一发现,不免让我开始的时候一头雾水,开始的时候一度认为是我的服务有问题,不能正常的写入数据库,后来侦测SQL语句发现,原来问题竟然出现在获取数据上,获取到的数据竟然都是空的,后来一调试发现,原来递交到后端的所有变量,都已经不是预期中的变量,竟然被PHP转化了. 提供测试代码如下: 复制代码 代码如下: <html> <head> <title>测试表单提交</title