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

📄 yifangcheckform.js

📁 航空订票系统基于asp.net和sql2005包含数据库和图片
💻 JS
📖 第 1 页 / 共 2 页
字号:
////////////////////////////////////////////////////////////////////////////////
/*
 *--------------- 客户端表单通用验证checkForm(oForm) -----------------
 *	本程序最初是由wanghr100(灰豆宝宝.net)的checkForm基础上进行修改的,增加了很多功能,如下:
 *	1.对非ie的支持
 *	2.增加了内置表达式和内置提示
 *  3.增加了显示方式(弹出式和页面显示式)
 *	4.增加了显示一条和显示全部
 *	5.进行了封装(CLASS_CHECK)
 *	6.支持外接函数或表达式(应用在密码一致)
 *	7.简化了调用方式,所有操作只需要<script language='javascript' src='checkform.js'>,
	  然后在HTML里定义各标签验证格式
 *	8.对IE增加了对键盘输入的限制(如:定义usage='int'时,输入框只能输入数字(非IE无效)
 *	9.增加了对disabled的不验证
 * 10.自定义报警方式(重写showMessageEx方法)

 *-----------------------------申明信息-----------------------------
 *	版本:	0.12
 *	作者:	ttyp
 *	邮箱:	ttyp@21cn.com
 *	博客:	http://www.cnblogs.com/ttyp/
 *  声明:	对本程序可以任意复制传播,但请保留这些声明,对于内置的表达式有些没有做到很严格,如果你
			有好的建议和意见,欢迎邮件和我联系或者上我的博客留言

 *	简介:
			本程序只需要对需要验证的标签设置三个属性:usage,exp,tip

			usage	:	内置格式或表达式或函数
			exp		:	正则表达式(注意如果指定了usage则忽略exp)
			tip		:	出错提示(如果是内置格式可以不要此属性,有缺省提示)

			调用时只需要引用<script language='javascript' src='checkform.js'>,然后为每个标记
			增加以上3个属性(不一定需要全部)

 *	原作者:	wanghr100(灰豆宝宝.net)
 *	email:	wanghr100@126.com
 *
 *--------------- 客户端表单通用验证checkForm(oForm) -----------------
 */
////////////////////////////////////////////////////////////////////////////////


function CLASS_CHECK()
{
	this.pass		= true;		//是否通过验证
	this.showAll	= true;		//是否显示所有的验证错误
	this.alert		= false;	//报警方式(默认alert报警)
	this.message	= "";		//错误内容
	this.first		= null;		//在显示全部验证错误时的第一个错误控件(用于回到焦点)
	this.cancel		= false;	

	//定义内置格式
	var aUsage = 
	{
		"int":"^([+-]?)\\d+$",											//整数
		"int+":"^([+]?)\\d+$",											//正整数
		"int-":"^-\\d+$",												//负整数
		"num":"^([+-]?)\\d*\\.?\\d+$",									//数字
		"num+":"^([+]?)\\d*\\.?\\d+$",									//正数
		"num-":"^-\\d*\\.?\\d+$",										//负数
		"float":"^([+-]?)\\d*\\.\\d+$",									//浮点数
		"float+":"^([+]?)\\d*\\.\\d+$",									//正浮点数
		"float-":"^-\\d*\\.\\d+$",										//负浮点数
																		//邮件
		"email":"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$",	
		"color":"^#[a-fA-F0-9]{6}",										//颜色
		"url":"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$",	//联接
		"chinese":"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",				//仅中文
		"ascii":"^[\\x00-\\xFF]+$",										//仅ACSII字符
		"zipcode":"^\\d{6}$",											//邮编
		"mobile":"^0{0,1}13[0-9]{9}$",									//手机
		"ip4":"^\(([0-1]?\\d{0,2})|(2[0-5]{0,2}))\\.(([0-1]?\\d{0,2})|(2[0-5]{0,2}))\\.(([0-1]?\\d{0,2})|(2[0-5]{0,2}))\\.(([0-1]?\\d{0,2})|(2[0-5]{0,2}))$",				//ip地址
		"notempty":"^[^\f]+$",											//非空
		"picture":"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",	//图片
		"rar":"(.*)\\.(rar|zip|7zip|tgz)$",								//压缩文件
		"date":"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$"								//日期
	};

	//缺省消息
	var aMessage =
	{
		"int"	:"请输入整数",											//整数
		"int+"	:"请输入正整数",											//正整数
		"int-"	:"请输入负整数",											//负整数
		"num"	:"请输入数字",											//数字
		"num+"	:"请输入正数",											//正数
		"num-"	:"请输入负整数",											//负数
		"float"	:"请输入浮点数",											//浮点数
		"float+":"请输入正浮点数",										//正浮点数
		"float-":"请输入负浮点数",										//负浮点数
		"email"	:"请输入正确的邮箱地址",									//邮件
		"color"	:"请输入正确的颜色",										//颜色
		"url"	:"请输入正确的连接地址",									//联接
		"chinese":"请输入中文",											//中文
		"ascii"	:"请输入ascii字符",										//仅ACSII字符
		"zipcode":"请输入正确的邮政编码",									//邮编
		"mobile":"请输入正确的手机号码",									//手机
		"ip4"	:"请输入正确的IP地址",										//ip地址
		"notempty":"不能为空",											//非空
		"picture":"请选择图片",											//图片
		"rar"	:"请输入压缩文件",										//压缩文件
		"date"	:"请输入正确的日期"										//日期
	}

	var me = this;

	function checkForm(oForm)
	{
		me.pass		= true;
		me.message	= "";
		me.first	= null;
		
		if(me.cancel==true)
		{
			return true;
		}
		
		var els = oForm.elements;
		//遍历所有表元素
		for(var i=0;i<els.length;i++)
		{
			//取得格式
			var sUsage	= els[i].getAttribute("Usage");	
			var sReg	= "";
			
			//如果设置Usage,则使用内置正则表达式,忽略Exp
			if(typeof(sUsage)!="undefined"&&sUsage!=null)
			{
				//如果Usage在表达室里找到,则使用内置表达式,无则认为是表达式;表达式可以是函数;
				if(aUsage[sUsage]!=null)
				{			
					sReg = aUsage[sUsage];
				}
				else
				{
					try
					{
						if(eval(sUsage)==false)
						{	
							me.pass		= false;
							if(me.first==null)
							{
								me.first	= els[i];
							}

							addMessage(getMessage(els[i]));							

							if(me.showAll==false)
							{
								setFocus(els[i]);
								break;
							}
						}
					}
					catch(e)
					{ 
						alert("表达式[" + sUsage +"]错误:" + e.description)
						return false;
					}
				}
			}
			else
			{			
				sReg = els[i].getAttribute("Exp");
			}

			if(typeof(sReg)!="undefined"&&sReg!=null)
			{
				//对于失效状态不验证
				if(isDisabled(els[i])==true)
				{
					continue;
				}

				//取得表单的值,用通用取值函数
				var sVal = getValue(els[i]);
				//字符串->正则表达式,不区分大小写
				var reg = new RegExp(sReg,"i");
				if(!reg.test(sVal))
				{
					me.pass		= false;
					if(me.first==null)
					{
						me.first	= els[i];
					}

					//alert(reg);
					//验证不通过,弹出提示warning
					var sTip = getMessage(els[i]);
					if(sTip.length==0&&typeof(sUsage)!="undefined"&&sUsage!=null&&aMessage[sUsage]!=null)
					{
						sTip = aMessage[sUsage];
					}
					addMessage(sTip);

					if(me.showAll==false)
					{
						//该表单元素取得焦点,用通用返回函数
						setFocus(els[i]);
						break;
					}

				}
			}        
		}

		if(me.pass==false)
		{
			showMessage();

			if(me.first!=null&&me.showAll==true)
			{
				setFocus(me.first);
			}
		}

		return me.pass;
	}

	/*
	 *	添加错误信息
	 */
	function addMessage(msg)
	{
		if(me.alert==true)
		{
			me.message += msg + "\n";
		}
		else
		{
			me.message += msg + "<br>";
		}
	}

	/*
	 *	显示错误
	 */
	function getMessage(els)
	{
		var sTip = els.getAttribute("tip");
		if(typeof(sTip)!="undefined"&&sTip!=null)
		{
			return sTip;
		}
		else
		{
			return "";
		}
	}


	/*
	 *	显示错误
	 */
	function showMessage()
	{
		//外接显示错误函数
		if(typeof(me.showMessageEx)=="function")
		{
			return me.showMessageEx(me.message);
		}

		if(me.alert==true)
		{
			alert(me.message);
		}
		else
		{
			var divTip;
				divTip = document.getElementById("divErrorMessage");
			try
			{
				if(typeof(divTip)=="undefined"||divTip==null)
				{
						divTip = document.createElement("div");

⌨️ 快捷键说明

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