⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checkform.js

📁 这个是j2eejava web 编程精要十五讲的全部源码。对学习java web编程的人来说是很能得的资料
💻 JS
字号:
/**
 * 检查提交的form的每个表单元素是否符合填写要求
 * @fm 需要检查的form元素。
 * @return 如果form的所有表单元素都符合要求,将返回true,
 * 否则将会报告不符合的原因,同时返回false。
 * 示例:
 * <form onsubmit="return checkForm(this)">
 *  	<input type=submit>
 *  	<input name=email title="请填写邮件地址~email!">
 * </form>
 * 说明:
 * 在form表单元素的title属性中指明此表单元素期望的格式。
 * 此格式说明如下
 *          请填写邮件地址~email!
 * 以最后一个"~"为界,前面的是提示信息,后面是格式信息。
 * 格式信息请遵守以下规则:
 * [number:][type][!]
 * 说明:
 * number:	一个数值后面跟一个":",表示此域的文本长度不可以超过指定的数值
 * type可以是如下表达式
 *	 email	邮件地址
 *	 int		整数
 *	 float	浮点数
 *	 date		日期
 *	 time		时间
 *	 /.../[gi]	自定义正则式
 * !表示此处文本不可以为空。
 */
	function checkForm(fm)
	{
		for(var i=0;i<fm.length;i++)
		{
			var title=fm[i].title;
			if(title=="")continue;//忽略未定义title的元素
			var p=title.lastIndexOf("~");
			if(p<0)continue;//忽略title中未定义检查格式的元素
			var n=title.lastIndexOf("&");
			var numLimit = 0;
			var info=title.substring(0,p);
			if(n > 0){
                          numLimit = title.substring(n+1,p);
                          numLimit = Math.pow(10,numLimit);
			  info=title.substring(0,n);
			}
			var format=title.substring(p+1,title.length);
			var name=fm[i].name;
			if(name=="")continue;//忽略没有名字的元素
			var value=trim(fm[i].value);
			//fm[i].value=value;//自动除去提交项的两端的空格
			var notNull=false;
			if(format.charAt(format.length-1)=="!")
			{
				notNull=true;
				format=format.substring(0,format.length-1);
			}
			if(notNull)
			{
				if(value=="")
				{
					alert(info+"\n的内容不可以为空。");
					fm[i].focus();
					return false;
				}
			}
			else
			{
				//内容可以为空时,
				if(value=="")
					continue;
			}
			//内容的长度判断
			var colonP=format.indexOf(":");
			if(colonP>0)
			{
				var lengthLimit=format.substring(0,colonP);
				if(!isNaN(lengthLimit))
				{
					if(value.length>lengthLimit)
					{
						alert(info+"\n的长度("+value.length+")超过限制"+lengthLimit);
						fm[i].focus();
						return false;
					}
					format=format.substring(colonP+1,format.length);
				}
			}
			if(format=="email")
			{
				//电子邮件格式
				var found=value.match(/\w+@.+\..+/);
				if(found==null)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个Email地址");
					fm[i].focus();
					return false;
				}
			}
			else if(format=="int")
			{
				//整数
				var intVal=parseInt(value);
				if(isNaN(intVal)||intVal!=value)
				{
					alert(info+"\n的格式不正确:\n"+value+"不是一个整数。");
					fm[i].focus();
					return false;
				}
				if(intVal < 0){
					alert(info+"\n的值\n"+value+"不能小于零。");
					fm[i].focus();
					return false;
                                }
			}
			else if(format=="float")
			{
				//浮点数
				var floatVal=parseFloat(value);
				if(isNaN(floatVal)||floatVal!=value)
				{
					alert(info+"\n的格式不正确:\n"+value+"不是一个浮点数。");
					fm[i].focus();
					return false;
				}
				if(floatVal < 0){
					alert(info+"\n的值\n"+value+"不能小于零。");
					fm[i].focus();
					return false;
                                }
				if(numLimit > 0 && floatVal >= numLimit){
					alert(info+"\n的值\n"+value+"已经大于最大值["+numLimit+"]");
					fm[i].focus();
					return false;
                                }
			}
			else if(format=="date")
			{
				//日期
				var found=value.match(/(\d{1,5})-(\d{1,2})-(\d{1,2})/);
				if(found==null||found[0]!=value||found[2]>12||found[3]>31)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个日期\n提示:[2003-01-01]");
					fm[i].focus();
					return false;
				}
				var year=trim0(found[1]);
				var month=trim0(found[2])-1;
				var date=trim0(found[3]);
				var d=new Date(year,month,date);
				if(d.getFullYear()!=year||d.getMonth()!=month||d.getDate()!=date)
				{
					alert(info+"\n的内容不正确:\n\""+value+"\"不是一个正确的日期\n提示:[2003-01-01]");
					fm[i].focus();
					return false;
				}
			}
			else if(format=="diffdate")
			{
				//日期
				var found=value.match(/(\d{1,5})-(\d{1,2})-(\d{1,2})/);
				if(found==null||found[0]!=value||found[2]>12||found[3]>31)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个日期\n提示:[2003-01-01]");
					fm[i].focus();
					return false;
				}
				var year=trim0(found[1]);
				var month=trim0(found[2])-1;
				var date=trim0(found[3]);
				var d=new Date(year,month,date);
				if(d.getFullYear()!=year||d.getMonth()!=month||d.getDate()!=date)
				{
					alert(info+"\n的内容不正确:\n\""+value+"\"不是一个正确的日期\n提示:[2003-01-01]");
					fm[i].focus();
					return false;
				}

                                var currTime = new Date();
                                var currDate = currTime.getFullYear()+"-"+(currTime.getMonth()+1)+"-"+currTime.getDate();
                                var arr1=currDate.split("-");
                                var arr2=value.split("-");
                                var date1=new Date(arr1[0],parseInt(arr1[1].replace(/^0/,""))-1,arr1[2]);
                                var date2=new Date(arr2[0],parseInt(arr2[1].replace(/^0/,""))-1,arr2[2]);


                                if(arr1[1].length==1)
                                  arr1[1]="0"+arr1[1];
                                if(arr1[2].length==1)
                                  arr1[2]="0"+arr1[2];
                                if(arr2[1].length==1)
                                  arr2[1]="0"+arr2[1];
                                if(arr2[2].length==1)
                                  arr2[2]="0"+arr2[2];
                                var d1=arr1[0]+arr1[1]+arr1[2];
                                var d2=arr2[0]+arr2[1]+arr2[2];
                                if(parseInt(d1)>parseInt(d2))
                                {
				  alert(info+"\n\""+value+"\"不能晚于当前日期\n提示:["+currDate+"]");
 				  fm[i].focus();
                                  return false;
                                }
			}
			else if(format=="time")
			{
				//时间
				var found=value.match(/(\d{2}):(\d{2})/);
				if(found==null||found[0]!=value||found[1]>23||found[2]>59)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个时间\n提示:[05:38]");
					fm[i].focus();
					return false;
				}
			}
			else if(format=="datetime")
			{
				var c_date = value.substring(0,10);
				var c_time = value.substring(11,17);

				//日期
				var found=c_date.match(/(\d{1,5})-(\d{1,2})-(\d{1,2})/);
				if(found==null||found[0]!=c_date||found[2]>12||found[3]>31)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个日期\n提示:[2000-01-01]");
					fm[i].focus();
					return false;
				}
				var year=trim0(found[1]);
				var month=trim0(found[2])-1;
				var date=trim0(found[3]);
				var d=new Date(year,month,date);
				if(d.getFullYear()!=year||d.getMonth()!=month||d.getDate()!=date)
				{
					alert(info+"\n的内容不正确:\n\""+value+"\"不是一个正确的日期\n提示:[2003-01-01 00:00:00]");
					fm[i].focus();
					return false;
				}

				//时间
				found=c_time.match(/(\d{2}):(\d{2})/);
//				found=c_time.match(/(\d{2}):(\d{2}):(\d{2})/);
				if(found==null||found[0]!=c_time||found[1]>23||found[2]>59)
				{
					alert(info+"\n的格式不正确:\n\""+value+"\"不是一个时间\n提示:[2003-01-01 05:38]");
					fm[i].focus();
					return false;
				}
			}
			else if(format!="")
			{
				//自定义
				try
				{
					var found=value.match(eval(format));
					if(found==null||found[0]!=value)
					{
						alert(info+"\n的格式不不符合要求:\""+value+"\"\n提示:["+format+"]");
						fm[i].focus();
						return false;
					}
				}
				catch(e)
				{
					alert(e.name+":\n["+fm[i].name+"]不合法的正则式\""+format+"\"");
					return false;
				}
			}
		}
		return true;
	}
/**
 * 除去字符串变量s两端的空格。
 */
	function trim(s)
	{
		s=s.replace(/^ */,"");
		s=s.replace(/ *$/,"");
		return s;
	}
/**
 * 除去字符串表示的数值变量开头的所有的"0"。
 * 比如
 * 	trim0("01")将返回"1"
 * 	trim0("1")将返回"1"
 * 	trim0("10")将返回"10"
 */
	function trim0(s)
	{
		s=s.replace(/^0*/,"");
		return s;
	}

	function CheckAll(form){
		for (var i=0;i<form.elements.length;i++){
			var e = form.elements[i];
			if (e.name != 'chkall')
				e.checked = form.chkall.checked;
				ifchecked=1;
		}
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -