码迷,mamicode.com
首页 > Web开发 > 详细

js1

时间:2017-06-29 23:59:37      阅读:488      评论:0      收藏:0      [点我收藏+]

标签:最大   idf   null   event   rtti   手机   amp   title   substr   

/*说明
-------------------------------------------------------------------------------------
函数名:InputCheck(InputEle)
InputEle 为要检测的元素,这个元素的class为格式化信息:输入类型|必要性|最小长度|最大长度
返回:message and false or true
格式化信息:
			输入类型:
				txt	1-文本(不能包含非法字符)
				num	2-数字(0123456789)
				val	3-数值(0123456789.)
				tel	4-电话号码(020-83559078)
				mob	5-手机号码(11位0123456789)
				dat	6-日期(YYYY-MM-DD)
				tim	7-时间(HH:MM:SS)
				sel	8-选择(值为-1时表示未选择)
				img 9-图像文件路径
				eml 10-电子邮箱格式
				idc	11-身份证
				
			必要性:	
				y	1-必要
				n 	0-不一定
			最小长度:0
			最大长度:2147483647
			
eg:<input class="txt|y|0|10" > 表示输入为文本,且是必要的,最小长度为0,最大长度为10
---------------------------------------------------------------------------------
*/

function InputCheck(InputEle){
	
	var ClassName=new String();//信息格式化:输入类型|必要性|最小长度|最大长度
	var availChar=new String();
	var invalChar=new String();
	var InputValue=new String();
	var alertTitle=new String();
	var i=0;
	try{ClassName=InputEle.myClass;}catch(e){return;}
	
	if (typeof ClassName == "undefined" || ClassName == null) return true;
	

	var arr=ClassName.split("|");
	
	var InputType="txt";    //默认为文本	
	var Need="n";		//默认无限制
	var minLen=0;		//默认无限制
	var maxLen=0;		//默认无限制
	var minVal="err";	
	var maxVal="err";

	if (InputEle.disabled==true){
		return true ;
	}	
		
	if (arr.length>0){
		InputType=arr[0];
	}	
	if (arr.length>1){
		Need=arr[1];
	}	
	if (arr.length>2){
		minLen=arr[2];
	}
	if (arr.length>3){
		maxLen=arr[3];
	}
	if (arr.length>4){
		minVal=arr[4];
	}
	if (arr.length>5){
		maxVal=arr[5];
	}

	InputValue = InputEle.value;
	alertTitle = InputEle.title;
	
	//必要性检测
	if (Need=="y"){
		if(InputValue.length ==0){
			alert(alertTitle + " 不能为空" );
			try {
			    InputEle.focus();
			    InputEle.select();
			}catch(ex){}
			return false;
		}
	}
	
	if(InputValue.length>0){//存在值时检测最小长度,最大长度
		if(minLen!=0&&InputValue.length <minLen){
			alert(alertTitle + " 不能小于 " + minLen.toString() +" 位");
			InputEle.focus();
			InputEle.select();
			return false;
		}
		if(maxLen!=0&&InputValue.length >maxLen){
			alert(alertTitle + " 不能大于 " + maxLen.toString() +" 位");
			InputEle.focus();
			InputEle.select();
			return false;
		}
	}
	
	switch(InputType){//输入类型
	case "txt"://1-文本(不能包含字符"‘%()")
		/*invalChar="=‘~!@#$%^&*()";
		for(i=0;i<invalChar.length;i++ ){
			if(InputValue.indexOf(invalChar.substr(i,1))>=0){
				alert (alertTitle + " 不能包含字符 " +invalChar);
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}*/
		return true;
		
	case "num"://2-数字(0123456789)
		availChar="0123456789";
		for(i=0;i<InputValue.length;i++ ){
			if(availChar.indexOf(InputValue.substr(i,1))<0){
				alert (alertTitle + " 只能由字符 " +availChar +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		return true;
		
	case "val"://3-数值(0123456789.)
		availChar="0123456789.";
		for(i=0;i<InputValue.length;i++ ){
			if(availChar.indexOf(InputValue.substr(i,1))<0){
				alert (alertTitle + " 只能由字符 " +availChar +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		if(minVal!="err"&&parseFloat(InputValue)<parseFloat(minVal)&&InputValue.length>0){
			alert (alertTitle + " 必须大于" +minVal.toString());
			InputEle.focus();
			InputEle.select();
			return false;
		}
		if(maxVal!="err"&&parseFloat(InputValue)>parseFloat(maxVal)&&InputValue.length>0){
			alert (alertTitle + " 必须小于" +maxVal.toString());
			InputEle.focus();
			InputEle.select();
			return false;
		}
		return true;
		
	case "tel"://电话号码(020-83559078)
		availChar="0123456789-";
		for(i=0;i<InputValue.length;i++ ){
			if(availChar.indexOf(InputValue.substr(i,1))<0){
				alert (alertTitle + " 只能由字符 " +availChar +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		return true;
		
	case "mob"://5-手机号码(11位0123456789)
		availChar="0123456789";
		if (InputValue.length==0){return true;}
		if (InputValue.length!=11){
				alert (alertTitle + "只能是11位的数字构成");
				InputEle.focus();
				InputEle.select();
				return false;
		}
		for(i=0;i<InputValue.length;i++ ){
			if(availChar.indexOf(InputValue.substr(i,1))<0){
				alert (alertTitle + "只能是11位的数字构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		return true;
		
	case "dat"://6-日期(YYYY-MM-DD)
					var FormatFlag=0;
					var ValidFlag=0;					
					var Index1=InputValue.indexOf("-");
			       	var Index2=InputValue.lastIndexOf("-");
			       	var ObjYear=InputValue.substring(0,4);
			       	var ObjMonth=1;
			       	var ObjDate=1;
			       	var LastDate = new Date(2002,2,2,0,0,0,0);
			       	
					if(InputValue.length!=0)
					{  	   
						if (Index1==4)
			          		{		  	
				  			if (InputValue.length==10 && Index2==7)
				  			{
				   				ObjMonth=InputValue.substring(5,7);
								ObjDate=InputValue.substring(8,10);
								FormatFlag=1;
				  			}

				  			if (InputValue.length==9 && Index2==7)
				  			{
				   				ObjMonth=InputValue.substring(5,7);
								ObjDate=InputValue.substring(8,9);
								FormatFlag=1;
				 			}
					
				 			if (InputValue.length==9 && Index2==6)
				 			{
				   				ObjMonth=InputValue.substring(5,6);
								ObjDate=InputValue.substring(7,9);
								FormatFlag=1;
				 			}
					
				 			if (InputValue.length==8 && Index2==6)
				 			{
				   				ObjMonth=InputValue.substring(5,6);
								ObjDate=InputValue.substring(7,8);
								FormatFlag=1;
				 			}
				 		}
				
						if (FormatFlag!=1 || InputValue.indexOf(".")!=-1)
						{
							ValidFlag=1;
						}    
			       
						if( isNaN(ObjMonth) || ObjMonth>12 || ObjMonth<=0 )
			          	{
							ValidFlag=1;
			          	} 
			          	
						LastDate.setYear(ObjYear);
						LastDate.setMonth(ObjMonth);
						LastDate.setDate(0); //Get the last date of the month.       	
			          	
						if( isNaN(ObjDate) || ObjDate>LastDate.getDate() || ObjDate<=0 )
			          	{
						ValidFlag=1;
			          	} 
			          	
						if( ValidFlag==1 )
			          	{
					    alert ("日期格式为YYYY-MM-DD:日期无效!")
						InputEle.focus();
						InputEle.select();
			            return false;
			          	} 

						if( isNaN(ObjYear) || ObjYear<1753 )
			          	{
			          	alert ("日期格式为YYYY-MM-DD:年份不能小于1753!")
						InputEle.focus();
						InputEle.select();
			            return false;
			          	}         				        
					}
		return true;
	case "tim"://7-时间(HH:MM:SS)		
		if (InputValue.length!=0){
			if (InputValue.length!=8){
						alert ("时间格式为HH:MM:SS")
						InputEle.focus();
						InputEle.select();
			            return false;
			}
			if (InputValue.indexOf(":")!=2||InputValue.lastIndexOf(":")!=5 ){
						alert ("时间格式为HH:MM:SS")
						InputEle.focus();
						InputEle.select();
			            return false;
			} 
			
			var tmp=InputValue.substr(0,2)
			availChar="0123456789";
			for(i=0;i<tmp.length;i++ ){
				if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>24){
					alert ("时间格式为HH:MM:SS")
					InputEle.focus();
					InputEle.select();
					return false;
				}
			}
			
			tmp=InputValue.substr(3,2)
			for(i=0;i<tmp.length;i++ ){
				if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){
					alert ("时间格式为HH:MM:SS")
					InputEle.focus();
					InputEle.select();
					return false;
				}
			}
			
			tmp=InputValue.substr(6,2)
			for(i=0;i<tmp.length;i++ ){
				if(availChar.indexOf(InputValue.substr(i,1))<0||parseInt(tmp)>60){
					alert ("时间格式为HH:MM:SS")
					InputEle.focus();
					InputEle.select();
					return false;
				}
			}
		}
		
		return true;
		
	case "sel"://选择(值为-1时表示未选择)
		if (InputValue==-1){
			alert("必须选择 "+ alertTitle);	
			InputEle.focus();
			//InputEle.select();					
			return false;
		}
		return true;
	
	case "img":// 图像文件
		if (InputValue.length==0){
			return true;
		}
		var img=document.createElement("img") ;
			img.src=InputValue ;
		if (img.fileSize<0){//不是有效的图像
			alert(InputValue +"不是有效的图像");	
			InputEle.focus();
			InputEle.select();					
			return false;
		}
		return true;
		
	case "eml"://电子邮箱
		if(Need=="n"&&i==0)
	    {
	        return true;
	    }
		var pattern = /^([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)*@([a-zA-Z0-9_-])+(\.([a-zA-Z0-9_-])+)+$/;
		var flag = pattern.test(InputValue);
		if(!flag) {
			alert(" E - Mail格式不正确!")
			InputEle.focus();
			InputEle.select();
			return false;
		}
		return true;
		
	case "idc"://身份证
		for(i=0;i<InputValue.length;)
			i++;
		if(i==15)
		{ 
		availChar="0123456789";
		for(m=0;m<InputValue.length;m++ )
			if(availChar.indexOf(InputValue.substr(m,1))<0)
			{
				alert ("15位"+alertTitle + " 只能由字符 " +availChar +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		else if(i==18)
		{ 
		availChar1="0123456789xX";
		availChar="0123456789";
		for(m=0;m<17;m++ )
			if(availChar.indexOf(InputValue.substr(m,1))<0)
			{
				alert ("前17位"+alertTitle + " 只能由字符 " +availChar +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		if(availChar1.indexOf(InputValue.substr(17,1))<0)
			{
				alert (alertTitle + " 只能由字符 " +availChar1 +" 构成");
				InputEle.focus();
				InputEle.select();
				return false;
			}
		}
		else
	    {
	        if(Need=="n"&&i==0)
	        {
	            return true;
	        }
		    alert(" 身份证位数不正确!")
		    InputEle.focus();
		    InputEle.select();
		    return false;
		}
		return true;
	
	}
	
}
		
function CheckAllInput(){			
	var f;
	for(var i=0;i<document.all.length;i++){
		try{
			f=InputCheck(document.all.item(i));					
		}catch(e){}				
		if (f==false){
			//event.returnValue=false;
			return false;
		}
	}	
	return true;
}

function CheckSubmit(oFrm,sAction,sMethod){
	//oFrm		为所提交From的对象
	//sAction	为所提交From的action 
	//sMethod	为所提交From的method
	event.returnValue=false;	
	if(CheckAllInput()!=false){		
		if (sAction!=""){oFrm.action=sAction;}
		if (sMethod!=""){oFrm.method=sMethod;}
		oFrm.submit();		
	}	
}




js1

标签:最大   idf   null   event   rtti   手机   amp   title   substr   

原文地址:http://www.cnblogs.com/systembighunter/p/7096743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!