JavaScript公共运行库

/*
****************************************************
功    能:验证函数集合
说    明:
版    本:1.0
作    者:
创建时间:2005-8-25
***************************************************
*/

<!--
//禁止输入空格
function forbidSpace()
{
    
//onkeypress="forbidSpace();"
    if (window.event.keyCode==32)
    {
        alert('不允许输入空格!');
        window.event.keyCode 
= 0x0;
    }
}

//去除字符串空格
function trim(s)
{            
    
return s.replace(/(^\s+)|(\s+$)/g,"");
}

//表单项是否为空
function IsEmpty(pstr)
{
    
//alert(pstr)
    if (trim(pstr).length == 0)
    {
        
return true;
    }
    
return false;
}

//比较两个表单项的值是否相同
function IsRepeat(obj1, obj2)
{
    
if ((obj1).value != (obj2).value) 
    {
       
return false;
    }
    
return true;
}

//比较两个数值大小
function CompairNum(value1,value2)
{
    
var ret;
    ret
=eval(value1-value2);    
    
if(ret>0 || isNaN(value1) || (value1.charAt(0)==0 && !isNaN(value1.charAt(1)) && value1.charAt(1)!='') )
    {
        alert('输入有误!');
        
return false;
    }
    
return true;
}

//比较两个数值大小
function CompairNum2(value1,value2,note)
{
    
var ret;
    
//alert(value1);
    ret=eval(value1-value2);    
    
if(ret>0 || isNaN(value1) || (value1.charAt(0)==0 && !isNaN(value1.charAt(1)) && value1.charAt(1)!='') )
    {
        alert(note);
        
return false;
    }
    
return true;
}

//百分数[数字 . %]
function percentage()
{
// 37 - %;
    if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==46||window.event.keyCode==37))
    {
        window.event.keyCode
=0x0;
    }
}

//身份证[数字 x]
function identityCard()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==120))
    {
        window.event.keyCode 
= 0x0;
        
return false;
    }
    
return true;
}

//格式必须仅为数字0-9
function onlyNumeric()
{
// 0-9:48-57;-:45;
    //var outCha="40 41 45 59";
    if(window.event.keyCode<48||window.event.keyCode>57)
    {
        alert('只能输入数字!')
        window.event.keyCode 
= 0x0;
        
return false;
    }
    
return true;
}

//格式必须为数字和-
function numericF()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==45))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//格式必须为数字和.
function numericD()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==46))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//格式为数字,点(.)和负号(-)
function numericDF()
{
    
if(!((window.event.keyCode>47&&window.event.keyCode<58)||window.event.keyCode==46||window.event.keyCode==45))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
        
return (false);
    }
}

//格式必须为数字和,
function numericB()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==44))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//格式必须为数字.,
function numericDB()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==44||window.event.keyCode==46))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//格式必须为数字-,
function numericFB()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==44||window.event.keyCode==45))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//格式必须为数字.-,
function numericDFB()
{
    
if(!(window.event.keyCode>47&&window.event.keyCode<58||window.event.keyCode==46||window.event.keyCode==44||window.event.keyCode==45))
    {
        alert('只能输入数字!')
        window.event.keyCode
=0x0;
    }
}

//[127以内ASCII值] 非大小写26个英文字母
function noLetter()
{
    
if ((window.event.keyCode>=65 && window.event.keyCode<=90)||(window.event.keyCode>=97&&window.event.keyCode<=122)||window.event.keyCode>127)
    {
        window.event.keyCode
=0x0;
    }
}

//表单项只能为数字和"-",用于电话/银行帐号验证上,可扩展到域名注册等
function IsNumberF(String)

    
var Letters = "1234567890-"//可以自己增加可输入值
    var i;
    
var c;
    
if(String.charAt( 0 )=='-')
        
return false;
    
if( String.charAt( String.length - 1 ) == '-' )
        
return false;
    
for( i = 0; i < String.length; i ++ )
    {
        c 
= String.charAt( i );
        
if (Letters.indexOf( c ) < 0)
        
return false;
    }
    
return true;
}

//数值检测,只为为0-9之间的数字
function IsNumber(name) 
{
    
if(name.length == 0)
        
return false;
    
for(i = 0; i < name.length; i++
    {
        
if(name.charAt(i) < "0" || name.charAt(i) > "9")
        
return false;
    }
    
return true;
}

//Digit evaluation function
function isNum(passedVal)
{
    
if (passedVal == "")
        
return false;
    
else if (isNaN(passedVal))    
        
return false;
        
    
for (i=0; i<passedVal.length; i++)
    {
        
if (passedVal.charAt(0== "." || passedVal.charAt(passedVal.length-1== "." || (passedVal.length > 1 && passedVal.charAt(0== "0" && !isNaN(passedVal.charAt(1))))
            
return false;
        
        
else if (passedVal.charAt(0== "-")
            i
++;            
        
else if (passedVal.charAt(i) < "0" && passedVal.charAt(i) != ".")
            
return false;
        
else if (passedVal.charAt(i) > "9" && passedVal.charAt(i) != ".")
            
return false;
    }
    
return true;
}
//↑↑↑//
//
判断是否为数值
function checkNum(obj)
{
    
if (isNum(document.all(''+ obj +'').value)==false)
    {
        alert('非正确的数值输入
!!!');
        document.all(''
+ obj +'').focus();
        document.all(''
+ obj +'').select();
        
return false;
    }
    
return true;
}


//表单项输入数值/长度限定
function Limit(obj, min, max) 
{
    
if ((obj).length > max || (obj).length < min)
    {
        
return false;
    }
    
return true;
}

//英文值检测
function isEnglish(name) 
{
    
if(name.length == 0)
        
return false;
    
for(i = 0; i < name.length; i++
    {
        
if(name.charCodeAt(i) > 128)
        
return false;
    }
    
return true;
}

//中文值检测
function isChinese(name) 
{
    
if(name.length == 0)
        
return false;
    
for(i = 0; i < name.length; i++
    {
        
if(name.charCodeAt(i) > 128)
        
return true;
    }
    
return false;
}



//限定表单项不能输入的字符
function contain(str,charset)// 字符串包含测试函数
{
  
var i;
  
for(i=0;i<charset.length;i++)
  
if(str.indexOf(charset.charAt(i))>=0)
  
return true;
  
return false;
}

// E-mail值检测
function isMail(name) 
{
    
if(!isEnglish(name))
        
return false;
    i 
= name.indexOf("@");
    j 
= name.lastIndexOf("@");
    
if(i == -1)
        
return false;
    
if(i != j)
        
return false;
    
if(i == name.length)
        
return false;
    
return true;
}

function IsEmail2(stringToTest)
{
       
var AmperAt
       
var DotAt
       
var strim
       
    
if (trim(stringToTest) == "")
    {
        
return(true);
    }
    strim 
= trim(stringToTest);
    
if (strim.search(/\s/!= -1)
        
return (false);
    AmperAt 
= stringToTest.indexOf("@")
    
if (AmperAt < 1)
           
return (false);
    DotAt 
= stringToTest.indexOf(".",AmperAt);
    
//DotAt = stringToTest.indexOf(".")
    if (DotAt < (AmperAt+2|| DotAt == (stringToTest.length-1))
           
return (false);
    
return (true);
}

function isEmail3(email)
{
    
var reg=/^@([\w-]+\.)+[\w-]{2,4}$$$/;
    
return ( email.match( reg ) != null ) ? true:false;
}

//---------------------------------------
function checkEmail(mail)
{
  
var strr;
  ValidationPassed 
= true;
  re
=/(\w+@\w+\.\w+)(\.{0,1}\w*)(\.{0,1}\w*)/i;
  re.exec(mail);
  
if (RegExp.$3!=""&&RegExp.$3!="."&&RegExp.$2!=".") strr=RegExp.$1+RegExp.$2+RegExp.$3
  
else
    
if (RegExp.$2!=""&&RegExp.$2!=".") strr=RegExp.$1+RegExp.$2
    
else  
    strr
=RegExp.$1
  
if (strr!=mail) 
  {
  alert(
"请填写正确的邮件地址!!!")
  ValidationPassed 
= false;
    
return;
  }
  
return true;
}
//↑↑↑//
function detectEmail(obj)    //检测输入的Email
{    
    
var mail=trim(document.all(''+obj+'').value);
    
if(IsEmpty(mail))
    {
        
return false;
    }
    
else if(!checkEmail(mail))
    {
        document.all(''
+obj+'').select();
        
return false;
    }
    
return true;
}
//-------------------------------------------

function IsDate(s)
{
    
var daysInMonth;
    
var year;
    
var month;
    
var day;
    
var delimiter;
    
var stemp;
    
    
// check for illegal characters
    if (s.search(/[^0-9-\/_]/!= -1)
        
return false;
        
    
// parse string to get year, month and day
    if (s.search(/\/{1}/!= -1)
        delimiter 
= "/";
    
else
    {
        
if (s.search(/-{1}/!= -1)
            delimiter 
= "-";
        
else
            
return false;
    }
    stemp 
= s;
    DelimAt 
= stemp.indexOf(delimiter);
    month 
= stemp.substring(0,DelimAt);
    stemp 
= stemp.substring(DelimAt + 1, stemp.length);
    DelimAt 
= stemp.indexOf(delimiter);
    day 
= stemp.substring(0,DelimAt);
    year 
= stemp.substring(DelimAt + 1, stemp.length);
        
    
// Explicitly change type to integer to make code work in both
    // JavaScript 1.1 and JavaScript 1.2.
    var intYear = parseInt(year,10);
    
var intMonth = parseInt(month,10);
    
var intDay = parseInt(day,10);
    
    
// catch invalid years (not 2- or 4-digit)
    if (intYear < 0return false;
    
if ((year.length != 2&& (year.length != 4)) return false;

    
// catch invalid months
    if (intMonth < 1 || intMonth > 12return false;

    
// catch invalid days, except for February
    if (intDay < 1 || intDay > 31return false;
    
switch (intMonth)
    {
        
case 1:
        
case 3:
        
case 5:
        
case 7:
        
case 8:
        
case 10:
        
case 12:
            daysInMonth 
= 31;
            
break;
        
case 4:
        
case 6:
        
case 9:
        
case 11:
            daysInMonth 
= 30;
            
break;
        
case 2:
            daysInMonth 
= ((intYear % 4 == 0&& ( (!(intYear % 100 == 0)) || (intYear % 400 == 0) ) ) ? 29 : 28;
            
break;
    }
    
if (intDay > daysInMonth) return false
    
return true;
}


//检测日期

// =============================================
//
 note:the function need 6 numeric,other is irregular
//
 检测输入值是否为六位,是否为时间
//
 =============================================
function Is6Date(inDate)
{
    
if(inDate.length==6 & !isNaN(inDate))//refuse string and length=6
    {
        
var fir2str;
        
var sec2str;
        
var thi2str;
        
var lastDate;
        
var newDate,returnResult;
        returnResult
=0;
        fir2str
=inDate.substr(0,2);//the first 2 string
        sec2str=inDate.substr(2,2);//the second 2 string
        thi2str=inDate.substr(4,2);//the third 2 string
        lastDate="20"+fir2str+"/"+sec2str+"/"+thi2str;
        newDate
=new Date(lastDate);
        returnResult
+=(sec2str==(newDate.getMonth()+1))?0:1;//the month must exist and be legality?
        returnResult+=(thi2str==newDate.getDate())?0:1;
        
if(returnResult>0)
        {
            alert(
"你的日期输入有误,格式必须为6位YYMMDD!");
            
return false;
        }
        
else
        {
            
return true;
        }
    }
    
else
    {
        alert(
"你的日期输入有误,格式必须为6位YYMMDD!");
        
return false;
    }
}

//金额大写
function DX(currencyDigits)
{
    
var MAXIMUM_NUMBER = 99999999999.99
    
// Predefine the radix characters and currency symbols for output: 
    var CN_ZERO = ""
    
var CN_ONE = ""
    
var CN_TWO = ""
    
var CN_THREE = ""
    
var CN_FOUR = ""
    
var CN_FIVE = ""
    
var CN_SIX = ""
    
var CN_SEVEN = ""
    
var CN_EIGHT = ""
    
var CN_NINE = ""
    
var CN_TEN = ""
    
var CN_HUNDRED = ""
    
var CN_THOUSAND = ""
    
var CN_TEN_THOUSAND = ""
    
var CN_HUNDRED_MILLION = "亿"
    
//var CN_SYMBOL = "人民币"; 
    var CN_DOLLAR = ""
    
var CN_TEN_CENT = ""
    
var CN_CENT = ""
    
var CN_INTEGER = ""
     
    
// Variables: 
    var integral;    // Represent integral part of digit number. 
    var decimal;    // Represent decimal part of digit number. 
    var outputCharacters;    // The output result. 
    var parts; 
    
var digits, radices, bigRadices, decimals; 
    
var zeroCount; 
    
var i, p, d; 
    
var quotient, modulus; 
     
    
// Validate input string:
    currencyDigits = currencyDigits.toString(); 
    
if (currencyDigits == "") { 
        alert(
"Empty input!"); 
        
return ""
    } 
    
if (currencyDigits.match(/[^,.\d]/!= null) { 
        alert(
"Invalid characters in the input string!"); 
        
return ""
    } 
    
if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/== null) { 
        alert(
"Illegal format of digit number!"); 
        
return ""
    } 
     
    
// Normalize the format of input digits: 
    currencyDigits = currencyDigits.replace(/,/g, "");    // Remove comma delimiters. 
    currencyDigits = currencyDigits.replace(/^0+/"");    // Trim zeros at the beginning. 
    // Assert the number is not greater than the maximum number. 
    if (Number(currencyDigits) > MAXIMUM_NUMBER) { 
        alert(
"Too large a number to convert!"); 
        
return ""
    } 
     
    
// Process the coversion from currency digits to characters: 
    // Separate integral and decimal parts before processing coversion: 
    parts = currencyDigits.split("."); 
    
if (parts.length > 1) { 
        integral 
= parts[0]; 
        decimal 
= parts[1]; 
        
// Cut down redundant decimal digits that are after the second. 
        decimal = decimal.substr(02); 
    } 
    
else { 
        integral 
= parts[0]; 
        decimal 
= ""
    } 
    
// Prepare the characters corresponding to the digits: 
    digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE); 
    radices 
= new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND); 
    bigRadices 
= new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION); 
    decimals 
= new Array(CN_TEN_CENT, CN_CENT); 
    
// Start processing: 
    outputCharacters = ""
    
// Process integral part if it is larger than 0: 
    if (Number(integral) > 0) { 
        zeroCount 
= 0
        
for (i = 0; i < integral.length; i++) { 
            p 
= integral.length - i - 1
            d 
= integral.substr(i, 1); 
            quotient 
= p / 4
            modulus 
= p % 4
            
if (d == "0") { 
                zeroCount
++
            } 
            
else { 
                
if (zeroCount > 0
                { 
                    outputCharacters 
+= digits[0]; 
                } 
                zeroCount 
= 0
                outputCharacters 
+= digits[Number(d)] + radices[modulus]; 
            } 
            
if (modulus == 0 && zeroCount < 4) { 
                outputCharacters 
+= bigRadices[quotient]; 
            } 
        } 
        outputCharacters 
+= CN_DOLLAR; 
    } 
    
// Process decimal part if there is: 
    if (decimal != "") { 
        
for (i = 0; i < decimal.length; i++) { 
            d 
= decimal.substr(i, 1); 
            
if (d != "0") { 
                outputCharacters 
+= digits[Number(d)] + decimals[i]; 
            } 
        } 
    } 
    
// Confirm and return the final output string: 
    if (outputCharacters == "") { 
        outputCharacters 
= CN_ZERO + CN_DOLLAR; 
    } 
    
if (decimal == "") { 
        outputCharacters 
+= CN_INTEGER; 
    } 
    
//outputCharacters = CN_SYMBOL + outputCharacters; 
    return outputCharacters;
}
    
//-->

///<PublicVariable>定义一全局非法字符枚举变量</PublicVariable>///
var ForbiddenWord="EXEC ,XP_,SP_,DECLARE ,UNION ,CMD ,+,@,//,..,;,--,%,0X "//PS:注意 [space]不能被trim掉


///<summary>检测是否存在SQL Injection问题</summary>///
//
/<parms>SQL语句 || String;</parms>///
//
/<returns>A Word In ForbiddenWord</returns>///
function CheckSQLInjection(SQL)
{    
    SQL 
= SQL.toUpperCase();
    arrForbiddenWord
=ForbiddenWord.split(",");

    
for (var i=0;i<arrForbiddenWord.length;i++)
    {
        
if (SQL.indexOf(arrForbiddenWord[i])>=0
        {             
            
return arrForbiddenWord[i];
        }
    }
    
return '';
}    

// 增加一个名为 CheckSQLInjection 的函数作为
//
 String 构造函数的原型对象的一个方法。
String.prototype.CheckSQLInjection = function()
{
    
return CheckSQLInjection(this);
}


//判断是否为HTML格式
String.prototype.IsHTML = function()
{
    
return /<(\/)?[A-Za-z]+>/.test(this);
}


///<summary>检测HTML及非法字符ForbiddenWord</summary>///
//
/<parms>ToControl - 要检测的控件; ValidControl - 显示验证消息的控件;</parms>///
//
/<returns>true/false;</returns>///
//
/<invoke>ToControl.OnBlur() || SubmitButton.Click();</invoke>///
function OnValidHTML(ToControl,ValidControl)
{
    
var bstr='';
    
    
var objToControl;
    
var objValidControl;
    objToControl 
= document.getElementById(ToControl);
    objValidControl 
= document.getElementById(ValidControl);
    
    
if(objToControl.value.IsHTML())
    {
        objValidControl.style.display
='block';
        objValidControl.innerHTML 
= "此处不允许类似HTML标记";
        
return false;
    }
    
    bstr
=objToControl.value.CheckSQLInjection();
    
if(bstr!='')                
    {                    
        objValidControl.style.display
='block';
        objValidControl.innerHTML  
= "此处不允许非法字符:" + bstr;//ForbiddenWord;
        return false;
    }
    objValidControl.style.display
='none';
    
return true;
}
posted @ 2006-03-02 13:39  blueKnight  Views(799)  Comments(0Edit  收藏  举报