📄 checkdatafunction.js
字号:
/*
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 + -