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

📄 checkdatafunction.js

📁 一个jsp开发的web mail项目。经典示例
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*
   nodes:
  下列函数返回值说明:
  凡是“Is”开头的函数,如果是"Is"后指明的状态,则返回真,否则为假
  eg. IsNum 如果是数字,返回真
  某些“Check”开头的函数,如果是"Check"后指明的状态,返回假,否则为真
  某些则相反,请具体查看函数说明
  eg. CheckEmpty 如果是空,返回假
  
  函数名解释:
   当有重载出现时
   NP 表示没有参数(no parameter)
   3P,4P 等表示参数个数(3 parameter,4 parameter)
  
  ***************************************************************
  函数目录:
  -----------校验输入与工具类--------------------------------------------
 
  TurnPage() 翻页功能,应用于按钮的ONCLICK和text的onkeypress事件
  ReplaceDoubleQuotes(strValue) 替换双引号为"
  CheckUnsafeMark(frm)  检查参数frm(form)对象里所有输入控件是否含有非法字符
  CheckKey(KeyCode)  检查输入键是否为0~9,a~z(A~Z),Del,-,.,
  CheckEmptyNP()  校验触发者的值是否为空 
  CheckEmpty(CheckCtl,disptext) 校验输入值是否为空
  CheckCardNo(CheckCtl,disptext)  校验一个合法的身份证号码(15,18位)
  Trim(strSource) 清除左右两边空格
  IsEmail(CheckCtl, s) 判断是否是正确的电子邮件地址
  IsPhoneNumber(CheckCtl,s) 判断是否是正确的电话号码
  IsLetter(CheckCtl,s) 判断是否是字母组合
  IsCode(CheckCtl,s) 判断是否是数字编码组合 数字和数字编码的区别:
 数字编码允许  000000010 ,不允许诸如: -1290092 ,23.,.3456等类型的值,而数字则认为是真
  
 
  ------------数字类-----------------------------------------
  Round(i,digit)   取整函数,digid为保留的小数位数
  CheckPositiveInt(CheckCtl,disptext,IsCanZero) 校验一个正整数
  CheckPositiveIntNP()  校验触发者的值是否为一个正整数
  CheckPositiveFloat(CheckCtl,disptext,floatcount) 校验一个合法的大于等于0的浮点数
  CheckPositiveFloatNP()  校验触发者的值是否一个合法的大于等于0的浮点数(2位小数)
  CheckPositiveFloat4P(CheckCtl,disptext,IsCanZero,floatcount) 校验一个合法的大于0的浮点数,是否可以等于零由参数IsCanZero决定
  IsCost(Costctrl) 检查费用输入,小数位为2位,且不能超过SQL Server中数据字段money最大值
  IsNum(txtctl,message,floatcount) 校验是否是数字
  CheckIntRange(CheckCtl,Min, Max,Msg) 校验一个合法的且在规定范围内的整数
  CheckFloatRange(CheckCtl,Min, Max,Msg) 校验一个合法的且在规定范围内的浮点数	
 
 
  -----------日期类-------------------------------------------
  GetDateDiff(strStart,strEnd) 计算两个日期间隔天数
  CheckYear(strYearInput) 检查输入是否是个有效年份
  AddDay(dateObj,days) 把一个日期加上n天
  CheckDiffDate(BDateCtl,EDateCtl,Msg) 比较两个日期的大小,如果开始日期大于结束日期,返回false;
  DateToStr(dateObj) 将一个日期对象转化为格式yyyy-MM-dd字符串
  DateTimeToStr(dateObj) 将一个日期时间对象转化为形如  yyyy-MM-dd HH:mm:ss 的字符串
  StrToDate(str)  yyyy-MM-dd 的字符串转化为日期对象:	
  StrToDateTime(str)   将一个yyyy-MM-dd HH:mm:ss 的字符串转化为日期时间对象
  StrToDateTime6P(year,month,day,hour,minute,second) 将一个参数构成的yyyy-MM-dd HH:mm:ss 的字符串转化为日期时间对象
  IsDate(str) 判断一个字符串是否为有效的日期并且格式是否正确 YYYY-MM-DD
  ----------------------------------------------------------
  
  
  
  
  *************************************************************
*/
			

var maxpn=999999999999;
var maxfn=999999999999.9;
var numerrormsg0="请输入0-999999999999之内的数字";
var numerrormsg1="请输入1-999999999999之内的数字";
var overerrormsg="数值超过最大值999999999999";


//翻页功能,应用于按钮的ONCLICK和text的onkeypress事件
//参数: isClick true: 按钮的onclick false: text的onkeypress
//    inputCtl : 输入框对象
//    pageCtl :  储存当前页号的对象
//    maxPageCtl : 储存最大页号的对象 可以为null
function TurnPage(isClick,inputCtl,pageCtl,maxPageCtl){

if (!isClick){
  var sr = event.srcElement;
  if (sr.type.toLowerCase()=="text"){ 
    if (event.keyCode == 13){
        if(!CheckPositiveInt(inputCtl,"页号请输入一个正整数!",false)) {
	        event.keyCode=0;
			return false;
	    }
		else {
		  if (maxPageCtl){
		    if (parseInt(inputCtl.value) > parseInt(maxPageCtl.value)){
		     alert("选择页数不能大于最大页数!");
			 event.keyCode = 0;
			 return false;
		    } 
		  }
		  pageCtl.value = inputCtl.value;
		  document.forms(0).submit();
		}
    }
  }
} else {
    //是翻页按钮
	if(!CheckPositiveInt(inputCtl,"页号请输入一个正整数!",false))
	    return false;
      if (maxPageCtl){
	     if (parseInt(inputCtl.value) > parseInt(maxPageCtl.value)){
		     alert("选择页数不能大于最大页数!");
			 return false;
		 } 
	  } 
	  pageCtl.value = inputCtl.value;
	  document.forms(0).submit();
	 
  } 

}

//替换双引号为"//
function ReplaceDoubleQuotes(strValue){
  return strValue.replace('"','"');
}

//
//检查FORM里所有输入控件是否含有非法字符//
function CheckUnsafeMark(frm)
{
	for(var i=0;i<frm.length;i++)
	{
	 var edit = frm.item(i);
	if ( (!edit.type)|| (edit.type.toLowerCase() != "text")) 
	{
	   continue;
	}
	else
	{	
	   var s = Trim(edit.value);
	   if ((s.indexOf("\"")>=0)||(s.indexOf("\'")>=0)||(s.indexOf("<")>=0)||(s.indexOf(">")>=0))
	   { 
		  alert("不能输入包含非法字符(如\", \', <, >)的文字!");
		  edit.select();
		 edit.focus();
		 return false;
		}
	   else
		continue;		      
	}//end of else
	}//end of for 	 
	return true;
}			



//检查输入键是否为0~9,a~z(A~Z),Del,-,.,/
//KeyDown 有效
function CheckKey(KeyCode)
{
Zero=48;
Nine=57;
Delete=46;
Minus=189;
Dot=190;
Divide=191;
Key_a=65;
Key_z=90;
_Zero=96;
_Nine=105;
_Divide=111;
_Minus=109;
_Dot=110;
return ((KeyCode>=Key_a)&&(KeyCode<=Key_z))||((KeyCode>=Zero)&&(KeyCode<=Nine))||((KeyCode>=_Zero)&&(KeyCode<=_Nine))||(KeyCode==Delete)||(KeyCode==Dot)||(KeyCode==Minus)||(KeyCode==Divide)||(KeyCode==0)||(KeyCode==_Minus)||(KeyCode==_Divide)||(KeyCode==_Dot);
}

//取整函数
//eg. Round(132.123456) 为 132.12
//eg. Round(132.123456,4) 为 132.1234
//eg. Round(132.123456,0) 为 132
function Round(i,digit)
{
  if (isNaN(parseFloat(i)))
  {
	 return '0';
   } 
	if(digit==0)
		p=1;
	else
	{
		if(digit)
			p=Math.pow(10,digit);
		else
			p=100;
	}
	var mm = Math.round(i*p)/p;
	var strTmp = eval("'"+ mm +"'");
	var behind = '';
	if (strTmp.indexOf('.')>=0)
	{
	   behind = strTmp.substring(strTmp.indexOf('.')+1,strTmp.length);
	   while(digit-behind.length>0)
	   {
		 behind += '0';
	   }
	   strTmp = strTmp.substring(0,strTmp.indexOf('.')+1) + behind;
	   
	}
	else
	{
	   for(var j=0;j< digit;j++)
	   {
		  behind += '0';
	   }
		if (digit >0)
		{
		  strTmp = strTmp + '.' + behind;
		}
	}
	return strTmp;
	
}

/********************************************
功能:自动计算两个日期间隔天数
先要检查开始日期是否大于截止日期,如果大于,返回
参数: start 开始日期字符串 end 截止日期字符串
*/
function GetDateDiff(strStart,strEnd)
{
    var start = strStart;
	var end = strEnd;
	if (StrToDate(start) > StrToDate(end))
	{
	 alert("起始日期必须小于截止日期!");return;
	}
	else
	{
		var startdate = new Date();
		startdate = StrToDate(start);
		
		var enddate = new Date();
		enddate =  StrToDate(end);
		var overdue = parseFloat(enddate) - parseFloat(startdate);
		overdue = overdue/(1000*24*60*60);
		return overdue;
	 }
}




/*			
功能: 得到两个日期相差的天数(每一个月按30天,一年360天计算) 该函数不精确
入口参数:	
			datestartObj: 日期对象1
			dateendObj: 日期对象2
			返回 dateendObj - datestartObj相差的天数 */
/*function GetDayDiff(datestartObj,dateendObj)
{
	var year=dateendObj.getFullYear() - datestartObj.getFullYear();
	var month=dateendObj.getMonth() - datestartObj.getMonth();
	var day=dateendObj.getDate() - datestartObj.getDate();				
	return year*12*30+month*30+day;
}*/

/*
	功能:检查输入是否是个有效年份			*/
function CheckYear(strYearInput)
{
      
	var years = strYearInput;
	if ( years != ""  && !isNaN(parseInt(years)) )
	{
		if (parseInt(years)<=3000  && parseInt(years)>=1900)
		{
			return true;
		}
		else
		{ alert('请输入合法年份!');return false;}
	}
	else 
	  return true;

}


/*  功能: 把一个日期加上n天
	入口参数:	
			dateObj: 要计算的日期对象
			days: 增加的天数 
	返回  增加后的新日期对象 */
function AddDay(dateObj,days)
{
    try
	{
	  
	  var lngDiff =  parseFloat(days);
	  lngDiff = lngDiff*24*60*60*1000;
	  dateObj = StrToDate(DateToStr(dateObj));
	  var ret = new Date(parseFloat(dateObj)+lngDiff);
	  return ret;
	}
	catch(x)
	{
	   return dateObj;
	}
	
}


/*	功能: 校验一个正整数
入口参数:CheckCtl: 要校验的输入框		disptext: 出错显示的信息	IsCanZero : 是否可以为零
返回:  真: 是正整数 假: 不是*/
function CheckPositiveInt(CheckCtl,disptext,IsCanZero) 
{   
	var s=new String(Trim(CheckCtl.value));
	var temp=parseInt(s);
	var result=true;
	if (  (isNaN(temp)) || (temp<0) || ( s.indexOf(".")>=0 )||(temp!=s))
	{
		result=false;
	}				
	else if ( (!IsCanZero)&&(temp==0) )
	 {
		result=false;
	 }
	if  (temp>maxpn) 
	{
		result=false;
		disptext=overerrormsg;
	}
	 if (!result)
	 {
		DispMessage(CheckCtl, disptext);
		return false;
	}					
	 return true;
	 
}

//
//不带参数的校验一个正整数
function CheckPositiveIntNP()
{
   var o = event.srcElement;
   if (o)
   {
	  if (o.tagName == "INPUT"  && !isNaN(parseFloat(o.value)) )
		return CheckPositiveInt(o,'请输入正整数!',true)
	  else
		return true;
	   
   }
   else
	 return true;
}





/*功能: 校验一个合法的大于等于0的浮点数
入口参数:	
			CheckCtl: 要校验的输入框						disptext: 出错显示的信息	
			floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
			如果没有page参数,有floatcunt参数则:把page 置null
			如:	CheckPositiveFloat(CheckCtl,"出错显示的信息",null,5)				*/
function CheckPositiveFloat(CheckCtl,disptext,floatcount)
{					
	var s=new String(Trim(CheckCtl.value));
	temp=parseFloat(s);
	var result=true;
	if( (isNaN(temp)) || (temp< 0)||(temp!=s) )
	{					
		result=false;
	}	
	else if (temp>maxfn) 
	{
		result=false;
		disptext=overerrormsg;
	}
	else
	{ 	 					
		limitcount=floatcount?floatcount:4;
		var array=s.split(".");
		if (array[1]==null)
		count=-1;
		else
		{
		var str=new String(array[1]);
		count=str.length;
		}
		if (count>limitcount)
		{
		
		 b=confirm("小数位数超过"+limitcount+"位,是否继续?"); 
		 if (b)
		  {
		   return true;
		  }
		  else
		  {
			CheckCtl.select();
			CheckCtl.focus();
			return false;
		  }
		}
	 }	
	 if (!result)
	 {
		DispMessage(CheckCtl,disptext);
		return false;
	 }			
		return true;
	
}

//不带参数校验一个合法的大于等于0的浮点数(2位小数)
function CheckPositiveFloatNP()
{
   var o = event.srcElement;
   if (o)
   {
	  if (o.tagName == "INPUT"  && !isNaN(parseFloat(o.value)) )
		 return CheckPositiveFloat(o,'请输入正确的数目!',2);
	  else
		 return true;
   }
   else
	 return true;
}			

/*
   校验一个合法的大于0的浮点数
   参数:CheckCtl: 要校验的输入框	
        disptext: 出错显示的信息
		IsCanZero:是否可以等于零	
		floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
*/
function CheckPositiveFloat4P(CheckCtl,disptext,IsCanZero,floatcount)
{					
	
	if ( CheckPositiveFloat(CheckCtl,disptext,floatcount) )
	 {
		if ( (parseFloat(CheckCtl.value)==0) &&(!IsCanZero) )
			{
				DispMessage(CheckCtl,disptext);
				return false;
			}
		else return true;	
	 }		
	else
	 return false;
}

/*
检查费用输入,小数位为2位,且不能超过数据字段money最大值	
true: 正确
*/		
function IsCost(Costctrl)
{
if (Costctrl.value != "") 
{
 if (IsNum(Costctrl,"费用请填入金额!",null,2))
	{
	  if (!CheckFloatRange(Costctrl,0,900337203685477.5807,"费用金额超出范围!"))
	  return false;
	  else
	  return true;
	  
	}
  else
  return false;           
}
else
return true;		
}	

/*判断是否是数字的函数
   输入:txtctl   输入的文本控件 message  显示的错误信息
   	返回值 :是数字返回true,不是返回false
		floatcount: 小数的最高位数(如果没有该参数,则默认为4位)
	如:	IsNum(txtctl,"出错显示的信息",5)  */
function IsNum(txtctl,message,floatcount)
{
	var s=new String(Trim(txtctl.value));
	var result=true;
	var num=Number(s);
	if ( (isNaN(num)) || (s=="") )
	{
		result=false;
	}		
	else if (num>maxfn) 
	{
		message=overerrormsg;
		result=false;
	}
	else
	{
		limitcount=floatcount?floatcount:4;
		var array=s.split(".");
		if (array[1]==null)
		count=-1;
		else
		{
		var str=new String(array[1]);
		count=str.length;
		}
		if (count>limitcount)
		{
		 alert("小数位数超过"+limitcount+"位!"); 
		 txtctl.select();
		 txtctl.focus();
		 return false;
		}
	}
	if (!result)
	{
		DispMessage(txtctl,message);
		return false;
	}	
		return true;	
}


/*
   功能:检查是否为空,不用任何参数,触发者为Text

*/
function CheckEmptyNP()
{
var CheckCtl = event.srcElement;

⌨️ 快捷键说明

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