JavaScript 表单提交校验函数库

/**  
* JavaScript 检查库  
* @author Jarry.li  
* @version 2.01  
* @last modify time 2003/09/11  
* #@ validate.js  
* 第一类 检查并返回检查结果(true or false)  
* a-1. ifDigit(str,allowNull)   是否为合法非负整数(examples/ifDigit.html)  
* a-2. ifLetter(str,allowNull) 是否为英文字母  
* a-3. ifExist(arr,element)     某个元素是否存在于某个数组中  
* a-4. ifDay(str,allowNull)     是否为天数  
* a-5. ifMonth(str,allowNull)   是否为月份  
* a-6. ifYear(str,allowNull)   是否为年份  
* a-7. ifYearInRange(str,min_year,max_year,allowNull)   是否为指定范围内的合法年份  
* a-8. ifDate(String,allowNull)   是否为日期  
* a-9. ifEmail(String,allowNull)   是否为邮件地址  
* a-10. ifPhone(String,allowNull)   是否为电话号码  
* a-11. ifGBK(String,allowNull)     是否包含中文字符  
* a-12.ifMoney(String,allowNull)   是否为合法货币数字  
* a-13 ifMoneyInRange(String,int,int,allowNull) 判断字符串是否为合法钱数,且是否超过限定范围  
* a-14. ifAvildDate(year,month,day) 判断是否为合法日期  
* a-15. ifSelectedButton(buttonGroup) 判断buttongroup为名的一组radio中有无被选中的项  
  
* 第二类 检查后直接报错  
* b-1. isDigit(Object,allowNull)   是否为数字  
* b-2. isDigitInMaxLen(object,maxlength,allowNull) 是否为非负整数,且长度在指定范围内  
* b-3. isDigitInRange(object,minValue,maxValue,allowNull) 是否为非负整数,且大小在指定范围内  
* b-4. isLetter(Object,allowNull) 是否为字母  
* b-5. isDay(Object,allowNull)     是否为天数  
* b-6. isMonth(Object,allowNull)   是否为月份  
* b-7. isYear(Object,allowNull)   是否为年份  
* b-8. isYearInRange(object,min_year,max_year,allowNull) 是否为指定范围内的合法年份  
* b-9. isDate(Object,allowNull)   是否为日期  
* b-10. isEmail(Object,allowNull)   是否为邮件地址  
* b-11. isPhone(Object,allowNull)   是否为电话号码  
* b-12. isGBK(Object,allowNull)     是否为中文字符  
* b-13. isMoney(Object,allowNull)   是否为合法货币数字  
* b-14. isMoneyInRange(object,minValue,maxValue,allowNull) 判断是否合法钱数且是否超过限定额度  
* b-15. isLengthInRange(Object, min, max,allowNull) 字符串长度是否在指定长度范围内  
* b-16. checkValidDate(yyObject,mmObject,ddObject,allowNull) 对日期进行全面的检查  
* b-17. checkValidDateRange(yyObject1,mmObject1,ddObject1,allowNull1,yyObject2,mmObject2,ddObject2,allowNull2)  
*   检查起始日期及截止日期  
* b-15. showMsg(String, Object)   显示提示信息String,光标焦点落在Object上,返回false  
  
* 第三类 功能函数,并不报错  
* c-1. getLength(String)   获取字符长度(每个中文字符为2个字符)  
* c-2. trim(String)   去掉字符串前后的空格并返回  
* c-3. textsTrim(formname) 将form中所有的text文本进行trim操作。  
  
*/   //日期数组
arr_day=new Array("1","2","3","4","5","6","7","8","9","10",
                   "11","12","13","14","15","16","17","18","19","20",
                   "21","22","23","24","25","26","27","28","29","30","31",
                   "01","02","03","04","05","06","07","08","09");

//月份数组
arr_mon=new Array("1","2","3","4","5","6","7","8","9","10","11","12",
                   "01","02","03","04","05","06","07","08","09");

//建立者:[email protected]
//判断字符串是否为合法非负整数
// a-1 ifDigit(str,allowNull)
function ifDigit(str,allowNull){
slen=str.length;
if(slen==0) return allowNull;
for (i=0; i<slen; i++){
   cc = str.charAt(i);
   if (cc <"0" || cc >"9"){
   return false;
   }
}
return true;
}

//建立者:[email protected]
//功能:判断字符串是否都是英文字母
// a-2 ifLetter(str,allowNull)
function ifLetter(str,allowNull ){
slen=getLength(str);
if (slen==0) return allowNull;
  
str = str.toUpperCase();
for ( var i = 0 ; i < slen; i ++ ){
   if ( str.charAt(i) < "A" || str.charAt(i) > "Z" )
   return false;
}
return true;
}

//建立者:[email protected]
//功能:判断某个元素是否存在于数组中
//a-3 ifExist(arr,element) arr:数组;element:某个元素
function ifExist(arr,element){
   for(var i=0;i<arr.length;i++){
     if(element==arr[i]) return true;
   }
   return false;
}

//建立者:[email protected]
//功能:判断是否为合法天数
//a-4 ifDay(str,allowNull)
function ifDay(str,allowNull){
slen=getLength(str);
if (slen==0) return allowNull;
return ifExist(arr_day,str);
}

//建立者:[email protected]
//功能:判断是否为合法月份
//a-5 ifMonth(str,allowNull)
function ifMonth(str,allowNull){
slen=getLength(str);
if (slen==0) return allowNull;
return ifExist(arr_mon,str);
}

//建立者:[email protected]
//功能:判断是否为合法年份(要求是四位整数,且数字>=1800 并且<=2050)
//a-6 ifYear(str,allowNull)
function ifYear(str,allowNull){
   return ifYearInRange(str,1800,2050,allowNull);
}

//建立者:[email protected]
//功能:判断是否为合法年份(要求是四位整数,且数字>=min_year 并且<=max_year)
//a-7 ifYearInRange(str,min_year,max_year,allowNull)
function ifYearInRange(str,min_year,max_year,allowNull){
slen=getLength(str);
if (slen==0) return allowNull;
if (slen!=4) return false;
if (!ifDigit(str,allowNull)) return false;
if (parseInt(str)<min_year || parseInt(str)>max_year) return false;
return true;
}

//建立者:[email protected]
//功能:判断是否为合法日期格式(要求是八位整数,格式为"yyyymmdd")
//a-8 ifDate(str,allowNull)
function ifDate(str,allowNull){
/*
slen=getLength(str);
if(slen==0) return allowNull;
if(slen!=8) return false;
if(!ifDigit(str,false)) return false;

var year = str.substr(0,4);
if(!ifYear(year,false)) return false;

var month= str.substr(4,2);
if(!ifMonth(month,false)) return false;

var day= str.substr(6,2);
if(!ifDay(day,false)) return false;

   if(!ifAvildDate(year,month,day)) return false;
return true;
*/
/*slen=getLength(str);
   if(slen==0) return allowNull;
   if(slen!=10) return false;
  
   var year = str.substr(0,4);
   if(!ifYear(year,false)) return false;
var s = str.substr(4,1);
         if(s!="-") return false;
    
         var month= str.substr(5,2);
         if(!ifMonth(month,false)) return false;
    
         var s = str.substr(7,1);
         if(s!="-") return false;
  
         var day= str.substr(8,2);
         if(!ifDay(day,false)) return false;

if(!ifAvildDate(year,month,day)) return false;
   return true; */
slen=getLength(str);
   if(slen==0) return allowNull;
   if(slen<8 || slen>10) return false;
var year = str.substr(0,4);
   if(!ifYear(year,false)) return false;
var s = str.substr(4,1);
         if(s!="-") return false;
str = str.substr(5);
var pos = str.indexOf("-");
if(pos == -1) return false;
var month = str.substring(0,pos);
if(!ifMonth(month,false)) return false;
var day = str.substr(pos + 1);
if(!ifDay(day,false)) return false;
var yearint = parseInt(year);
var monthint = parseInt(month);
var dayint = parseInt(day);
if(yearint%4 == 0)
{  
     if(monthint==2 && dayint>29) return false;
}
else
{
     if(monthint==2 && dayint>28) return false;
}

return true;
}

//建立者:[email protected]
//判断字符串是否为合法邮件地址
// a-9 ifEmail(str,allowNull)
function ifEmail(str,allowNull){
if(str.length==0) return allowNull;
i=str.indexOf("@");
j=str.lastIndexOf(".");
if (i == -1 || j == -1 || i > j) return false;
return true;
}

//建立者:[email protected]
//判断url是否为正确的恶地址;
//0-9,a-z
function validateURL(url){
//validateURL
if(url.search(/^[A-Za-z0-9 -]+/.[A-Za-z0-9]+[//=/?%/-&_~`@[/]/':+!]*([^<>/"/"])*$/)!=0){
return false;
//}else if(url.substring(0,4)=="www."){
//网址不要前面的www.,如果没用的话可以注释掉;
//return false;
}else{
return true;
}
}

//建立者:[email protected]
//判断字符串是否为合法电话号码
// a-10 ifPhone(str,allowNull)
function ifPhone(str,allowNull){
slen=getLength(str);
if (slen==0) return allowNull;
for (i=0; i<slen; i++){
   cc = str.charAt(i);
   if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/"){
   return false;
   }
}
return true;
}

//建立者:[email protected]
//判断字符串是否为合法手机号码
function ifMobile(str,allowNull){
   slen=getLength(str);
   if(slen==0) return allowNull;
   if(slen!=11) return false;
   if(!ifDigit(str,allowNull))
   return false;
   if(str.substring(0,2) != '13')
   return false;
   if(str.charAt(2)=='2')
   return false;
   return true;
}
/*  
建立者:lichunping at 2004-03-24    
  
判断字符串是否为中国移动手机号码  
*/  
function ifChinaMobilePhone(PhoneNumber,allowNull)    
{    
     if ( ifMobile(PhoneNumber,allowNull) )    
     {    
       if(getLength(PhoneNumber) == 0 ) return allowNull;    
   if( PhoneNumber.charAt(2)>='4' && PhoneNumber.charAt(2)<='9')   return true;    
     }    
     return false ;    
}    
  
//建立者:[email protected]    
//判断字符串是否包含中文字符    
// a-11 ifGBK(str,allowNull)    
function ifGBK(str,allowNull){    
for(var i=0;i<str.length;i++){    
       var rstr=escape(str.substring(i,i+1));    
       if (rstr.substring(0,2)=="%u"){    
           return true;    
       }    
   }    
return false;    
}    
  
//建立者:[email protected]    
//判断单双字节的长度    
// 设str某输入框内的值,若是双字节则长度多增加一个;    
function bytes(str){    
if(typeof(str)!='string'){    
   str = str.value;    
}    
var len = 0;    
for(var i = 0; i < str.length; i++){    
   if(str.charCodeAt(i) > 127){    
   len++;    
   }    
   len++;    
}    
return len;    
}    
  
//建立者:[email protected]    
//限制最大字符输入,若输入框里的字符长度超出则提示    
//判断单双字节;    
// countLength(object)    
function countLength(maxLen,obj)    
{    
var dLen = 0,sLen = 0, msg = "";    
for(i=0; i< obj.length; i++ ){    
   if(obj.charCodeAt(i) > "0" && obj.charCodeAt(i) < "128"){    
     sLen+=1;    
     }else{    
       dLen+=2;    
   }    
}    
totalLen = sLen+dLen;    
overLen = totalLen-maxLen;    
if( totalLen > maxLen){    
     msg = ("最多" + maxLen + "字符( "+ (maxLen/2) +"个汉字),您超出了" + overLen + "个字符,请修改。");    
   }    
   return msg;    
}    
//建立者:[email protected]    
//限制最大字符输入,若输入框里的字符长度超出则提示    
//判断单双字节;    
// countLength(object)    
maxLen=100;    
function countLength(o)    
{    
var dLen;    
var sLen;    
dLen=0;sLen=0;    
for(i=0;i<o.value.length;i++){    
   if(o.value.charCodeAt(i) > "0" && o.value.charCodeAt(i) < "128"){    
     sLen+=1;    
     }else{    
     dLen+=2;    
   }    
}    
tLen=sLen+dLen;    
lNum=tLen-maxLen;    
if(tLen>maxLen){    
   alert("注意,消息最多"+maxLen+"字符!/n您超出了"+lNum+"个字符,不能继续输入!");    
   }    
}    
//建立者:[email protected]    
//判断字符串是否为合法钱数    
// a-12 ifMoney(String)    
function ifMoney(str,allowNull){    
if (str.length==0) return allowNull;    
  
if ( ( pos = str.indexOf( "." ) ) != -1 ){    
     if (str.length==1)    
       return false;    
          
     if ( ( pos = str.indexOf(".", pos + 1) )   != -1 )    
       return false;    
}    
  
for ( var i = 0 ; i < str.length; i ++ ){    
   if (( str.charAt(i) < "0" || str.charAt(i) > "9" )&&(str.charAt(i)!="."))    
     return false;    
}    
return true;    
}    
  
//建立者:[email protected]    
//判断字符串是否为合法钱数,且是否在限定范围内    
// a-13 ifMoneyInRange(str,minValue,maxValue,allowNull)    
function ifMoneyInRange(str,minValue,maxValue,allowNull){    
if (str.length==0) return allowNull;    
if(!ifMoney(str)) return false;    
if(parseFloat(str)>maxValue) return false;    
if(parseFloat(str)<minValue) return false;    
return true;    
}    
  
//建立者:[email protected]    
//判断是否为合法日期    
// a-14 ifAvildDate(year,month,day)    
function ifAvildDate(year,month,day){    
   if((month==4||month==6||month==9||month==11) && day>30){    
     return false;    
   }else if(month==2){    
     if(year % 4 >0 && day>28){    
       return false;    
     }else if(day>29){    
       return false;    
     }    
   }else if(day>31){    
     return false;    
   }    
   return true;      
}    
  
//建立者:[email protected]    
//判断buttongroup为名的一组radio,checkbox中有无被选中的项    
// a-15 ifSelectedButton(buttonGroup)    
function ifSelectedButton(buttonGroup){    
     if(typeof buttonGroup=="undefined") return false;    
      
     if(typeof buttonGroup.length=="undefined"){    
         if(buttonGroup.checked) return true;    
         return false;    
     }    
      
     for (var i=0;i<buttonGroup.length;i++){    
         if (buttonGroup[i].checked) return true;    
     }    
     return false;    
}    
  
//建立者:[email protected]    
//功能: 检查字段长度是否在指定范围内    
//示例: ifLengthInRange(form1.t1, 4,10,false)    
//输入参数: 需要检查的表单对象名称,最小长度,最大长度    
//输出参数: true or false    
// a-16 ifLengthInRange(obj, min, max,allowNull)    
function ifLengthInRange(obj, min, max,allowNull){    
//obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return false;    
   return true;    
}    
  
if (slen < min) return false;    
if (slen > max) return false;    
return true;    
}    
  
  
//建立者:[email protected]    
//功能: 检查是否为非负整数    
//示例: isDigit(String,allowNull)    
//输入参数: 需要检查的表单对象名称    
//输出参数: true或出错信息    
// b-1 isDigit(Object,allowNull)    
function isDigit(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个不小于0的整数.",obj);    
   return true;    
}    
for (i=0; i<slen; i++){    
   cc = obj.value.charAt(i);    
   if (cc <"0" || cc >"9") return showMsg("输入不合要求,必须为不小于0的整数.",obj);    
}    
return true;    
}    
  
//建立者:[email protected]    
//功能: 检查是否为非负整数,并且长度不超过指定限制    
//示例: isDigitInMaxLen(String obj,int length,boolean allowNull)    
//输入参数: 需要检查的表单对象名称,允许的最大长度    
//输出参数: true或出错信息    
// b-2 isDigitInMaxLen(Object,maxlength,allowNull)    
function isDigitInMaxLen(obj,maxlength,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull)    
   return showMsg("必须输入一个长度不超过"+maxlength+"的整数.",obj);    
   return true;    
}    
if(slen>maxlength) return showMsg("长度超过限制,最大长度为"+maxlength+".",obj);    
for (i=0; i<slen; i++){    
   cc = obj.value.charAt(i);    
   if (cc < "0" || cc > "9") return showMsg("输入不合要求,必须为不小于0的整数.",obj);    
}    
return true;    
}    
  
//b-3 isDigitInRange(object,minValue,maxValue,allowNull)    
function isDigitInRange(obj,minVal,maxVal,allowNull){    
   obj.value=trim(obj.value);    
   if(obj.value.length==0){    
     if(!allowNull)    
       return showMsg("必须输入一个大小在"+minVal+" - "+maxVal+"之间的整数.",obj);    
     return true;    
   }    
   if(!isDigit(obj,false)) return false;    
   if(obj.value<minVal)    
     return showMsg("输入的数值太小,最小值为"+minVal,obj);    
   if(obj.value>maxVal)    
     return showMsg("输入的数值太大,最大值为"+maxVal,obj);    
   return true;    
}    
  
//建立者:[email protected]    
//功能:判断字符串是否都是字母    
//b-4 isLetter(Object,allowNull)    
function isLetter(obj,allowNull){    
obj.value=trim(obj.value);    
str = obj.value;    
slen=getLength(str);    
if ( slen == 0 ){    
   if(!allowNull) return showMsg("必须有输入值.",obj);    
   return true;    
}    
str = str.toUpperCase();    
for ( var i = 0 ; i < slen; i ++ ){    
   if ( str.charAt(i) < "A" || str.charAt(i) > "Z" ) return showMsg("输入的必须都是英文字母.",obj);    
}    
return true;    
}    
  
//b-5 isDay(Object,allowNull)    
function isDay(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合法日期(01~31).",obj);    
   return true;    
}    
if (!ifDigit(obj.value)) return false;    
if (obj.value < "01" || obj.value > "31"){    
   return showMsg("日格式有误,正确的格式为:DD(01~31),如:02",obj);    
}    
return true;    
}    
  
// b-6 isMoneth(Object,allowNull)    
function isMonth(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合法月份(01~12).",obj);    
   return true;    
}    
if (!ifDigit(obj.value)) return false;    
if(slen!=2) return showMsg("必须输入两位数字(01~12).",obj);    
if (obj.value < "01" || obj.value > "12"){    
   return showMsg("月份格式有误,正确的格式为:MM(01~12),如:01",obj);    
}    
return true;    
}    
  
//建立者:默认    
//功能:检查是否合法年份    
//示例:isYear(Object,allowNull)    
//输入参数:被检查字符串    
//输出参数:true 或 错误信息    
// b-7 isYear(Object,allowNull)    
function isYear(obj,allowNull){    
   return isYearInRange(obj,1800,2050,allowNull);    
}    
  
  
// b-8 isYearInRange(object,min_year,max_year,allowNull)    
function isYearInRange(obj,min_year,max_year,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合法年份("+min_year+"~"+max_year+").",obj);    
   return true;    
}    
if (slen!=4) return showMsg("输入的年份不合要求,请输入一个合理年份("+min_year+"~"+max_year+").",obj);    
if (!ifDigit(obj.value,false)) return showMsg("输入的年份不合要求,请输入一个合理年份("+min_year+"~"+max_year+").",obj);    
if (parseInt(obj.value)<min_year || parseInt(obj.value)>max_year)    
   return showMsg("输入的年份不合要求,请输入一个合理年份("+min_year+"~"+max_year+").",obj);    
return true;    
}  
//建立者:[email protected]     
//功能:检查是否合法日期    
//示例:isDate(Object)    
//输入参数:被检查字符串    
//输出参数:true 或 错误信息    
// b-9 isDate(Object)    
function isDate(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合法日期,格式为YYYYMMDD,如19990102",obj);    
   return true;    
}    
  
if (!ifDigit(obj.value)){    
   return showMsg("日期输入格式有误,不能含有非数字的字符.",obj);    
}else if (slen < 8){    
   return showMsg("日期输入格式有误,正确的格式为:YYYYMMDD,如:19990102",obj);    
}    
year = obj.value.substr(0,4);    
if(!ifYear(year,false)) return showMsg("日期中年份输入不合理,应在1800~2050之间.",obj);    
month = obj.value.substr(4,2);    
if(!ifMonth(month,false)) return showMsg("日期中月份输入不合理,应在01~12之间.",obj);    
day = obj.value.substr(6,2);    
if(!ifDay(day,false)) return showMsg("日期中日子输入不合理,应在01~31之间.",obj);    
if(!ifAvildDate(year,month,day)) return showMsg("输入的日期不存在.",obj);    
return true;    
}    
  
//b-10 isEmail(Object)    
function isEmail(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合理的邮件地址.",obj);    
   return true;    
}    
  
i=obj.value.indexOf("@");    
j=obj.value.lastIndexOf(".");    
// if (! ifGBK(obj)) i = -1;    
if (i == -1 || j == -1 || i > j) return showMsg("邮件地址输入不合理.",obj);    
return true;    
}    
  
// b-11 isPhone(Object)    
function isPhone(obj,allwoNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allwoNull) return showMsg("必须输入一个合理的电话号码.",obj);    
   return true;    
}    
  
for (i=0; i<slen; i++){    
   cc = obj.value.charAt(i);    
   if ((cc <"0" || cc >"9") && cc != "-" && cc!="+" && cc!="(" && cc !=")" && cc !="/"){    
   return showMsg("电话号码含有非法字符.",obj);    
   }    
}    
return true;    
}    
  
// b-12 isGBK(Object,allowNull)    
function isGBK(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个字串.",obj);    
   return true;    
}    
for(var i=0;i<obj.value.length;i++){    
   var rstr=escape(obj.value.substring(i,i+1));    
     if (rstr.substring(0,2)=="%u"){    
       return true;    
     }    
   }    
return showMsg("输入的字串中没有中文字符",obj);    
}    
  
//建立者:[email protected]    
//判断字符串是否为合法钱数    
// b-13 isMoney(Object,allowNull)    
function isMoney(obj,allowNull){    
obj.value=trim(obj.value);    
slen=getLength(obj.value);    
if(slen==0){    
   if(!allowNull) return showMsg("必须输入一个合理钱数.",obj);    
   return true;    
}    
  
if (ifMoney(obj.value,false)){    
   return true;    
}else{    
   return showMsg("不是合理的钱数.",obj);    
}    
return true;    
}

你可能感兴趣的:(JavaScript,function,object,String,中国移动,电话)