一个不错的 js 校验

var aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}

//此文件提供WEB应用程序中常用的javascript方法。



/*

 *--------------- 客户端表单通用验证CheckForm(oForm) -----------------

 * 功能:通用验证所有的表单元素.

 * 使用:

 *    <form name="form1" οnsubmit="return CheckForm(this)">

 *    <input type="text" name="id" check="^/S+___FCKpd___0quot; warning="id不能为空,且不能含有空格">

 *    <input type="submit">

 *    </form>

 * author:wanghr100(灰豆宝宝.net)

 * email:wanghr100@126.com

 * update:19:28 2004-8-23

 * 注意:写正则表达式时一定要小心.不要让"有心人"有空子钻.

 * 已实现功能:

 * 对text,password,hidden,file,textarea,select,radio,checkbox进行合法性验证

 * 待实现功能:把正则表式写成个库.

 *--------------- 客户端表单通用验证CheckForm(oForm) -----------------

 */





//主函数

function CheckForm(oForm)

{

    var els = oForm.elements;

    //遍历所有表元素

    for(var i=0;i<els.length;i++)

    {

        //是否需要验证

        if(els[i].check)

        {

            //取得验证的正则字符串

            var sReg = els[i].check;

            //取得表单的值,用通用取值函数

            var sVal = GetValue(els[i]);

            //字符串->正则表达式,不区分大小写

            var reg = new RegExp(sReg,"i");

            if(!reg.test(sVal))

            {

                //验证不通过,弹出提示warning

                alert(els[i].warning);

                //该表单元素取得焦点,用通用返回函数

                GoBack(els[i])  

                return false;

            }

        }

    }

}



//通用取值函数分三类进行取值

//文本输入框,直接取值el.value

//单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个

//单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个

function GetValue(el)

{

    //取得表单元素的类型

    var sType = el.type;

    switch(sType)

    {

        case "text":

        case "hidden":

        case "password":

        case "file":

        case "textarea": return el.value;

        case "checkbox":

        case "radio": return GetValueChoose(el);

        case "select-one":

        case "select-multiple": return GetValueSel(el);

    }

    //取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数

    function GetValueChoose(el)

    {

        var sValue = "";

        //取得第一个元素的name,搜索这个元素组

        var tmpels = document.getElementsByName(el.name);

        for(var i=0;i<tmpels.length;i++)

        {

            if(tmpels[i].checked)

            {

                sValue += "0";

            }

        }

        return sValue;

    }

    //取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数

    function GetValueSel(el)

    {

        var sValue = "";

        for(var i=0;i<el.options.length;i++)

        {

            //单选下拉框提示选项设置为value=""

            if(el.options[i].selected && el.options[i].value!="")

            {

                sValue += "0";

            }

        }

        return sValue;

    }

}



//通用返回函数,验证没通过返回的效果.分三类进行取值

//文本输入框,光标定位在文本输入框的末尾

//单多选,第一选项取得焦点

//单多下拉菜单,取得焦点

function GoBack(el)

{

    //取得表单元素的类型

    var sType = el.type;

    switch(sType)

    {

        case "text":

        case "hidden":

        case "password":

        case "file":

        case "textarea": el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();

        case "checkbox":

        case "radio": var els = document.getElementsByName(el.name);els[0].focus();

        case "select-one":

        case "select-multiple":el.focus();

    }

}



//检测所有控件输入值的合法性



function checkAll(v_frm) {

 //var p_frm = document.forms[getNetuiTagName(v_frm)];

    var p_frm = v_frm;

 var eCount = p_frm.elements.length;

 var v="";

    

    var element_type = "";//控件类型,只针对下拉框



 var discript = "";//输入值名称



 var nullflag = "1";//是否可为空值,0-不可,1-可

 var v_type = "s";//输入值类型,s-字符串, i-整数,f-浮点数,d-日期,e-邮件,c-身份证,p-邮编,phone -电话号码,m -移动电话,ip - ip地址,t - 短时间



 var length = "";//输入值长度



 var mins = "";//最小输入值



 var maxs = "";//最大输入值





 for(var i = 0; i < eCount; i++) {

        

        element_type = "";

  discript = "";

  v_type = "s";

  length = "";

  nullflag = "1";

  maxs = "";

  mins = "";





  var e=p_frm.elements[i];

  if (e.style.behavior == null || e.style.behavior == "")

   continue;

  parseTag(e.style.behavior);

        if (( v = getNextValue()) != null) {

   element_type = v;

  }

  if (( v = getNextValue()) != null) {

   discript = v;

  }

  if ((v = getNextValue()) != null) {

   nullflag = v;

  }

  if ((v = getNextValue()) != null) {

   v_type = v;

  }

  if ((v = getNextValue()) != null) {

   length = v;

  }

  if ((v = getNextValue()) != null) {

   mins = eval(v);

  }

  if ((v = getNextValue()) != null) {

   maxs = eval(v);

  }

  if (checkValidate(element_type,e, discript, v_type, length, nullflag, maxs, mins) == "0")

   return false;

 }

 return true;

}

//判断是否是纯空格字符串

function isSpaceStr(str) {

 var e;

 var result = false;

 for(var i=0;i<str.length;i++)

 {

  e = str.charAt(i);

  if(e != " ")

  {

   result = true;

   break;

  }

 }

 return result;

}

//判断是否是纯回车

function isEnter(str)

      {

          

         var len=str.length;

         if(len<1) return false;

         for(var i=0;i<len;i++){   

            str=str.replace("/n"," ");

            str=str.replace("/r"," ");

         if(str.substring(i,i+1)!=" "){

                return true;

                  }

            }

          return false;

    }

/**

* 检验用户指定的对象是否合法

* @param element        用户需要校验的对象

* @param discript       对象的描述



* @param type           对象的类型:

*                       i  整数

*                       f  浮点

*                       s  字符

*                       d  日期

*                       e  邮件

*                       c  身份证



*                       p  邮编

* @param length         对象的最大长度



* @param type           能否为空:



*                       1  可以为空

*                       0  不能为空

* @param maxs           最大值



* @param mins           最小值



* @return               全部条件合法返回true;否则返回false

*/

function checkValidate(element_type,element, discript, type, length, nullflag, maxs, mins) {

    if (element == "") {

        window.alert("函数调用出错,请输入控件!")

        return(0);

    }



    if (discript == "") {

        window.alert("函数调用出错,请输入控件描述!")

        return(0);

    }



    if (nullflag == 0) {

        if (element_type == "select") {

            if ( element.style.display=="block" || element.style.display=="") {

                if (element.value == "0") {

                    window.alert("请选择" + discript + "!");

                    element.focus();

                    return(0);  

                }

            }

        } else {

            if (element.value == "" || !isSpaceStr(element.value) || !isEnter(element.value)) {

                window.alert("请输入" + discript + "!");

                element.focus();

                return(0);

            }

        }

    }else

 {

  if(element.value=="")  

         return(1);

 }

    if (type != "") {

        switch (type) {

      case "i"://整数

       {

        if (element.value.length != 0 && isInteger(element.value) != true) {

         window.alert(discript + "必须输入整数!")

         element.focus();

         return(0);

        }else if (element.value.length == 0 ){

            //element.value = "0" ;

        }

        break;

       }



      case "f"://浮点数



       {

        if (element.value.length != 0 && isNaN(element.value) == true) {

               window.alert(discript + "必须输入数字!")

         element.focus();

         return(0);

        } if (element.value.length == 0 ){

            //element.value = "0" ;

        }

        break;

       }

      case "s"://字符串



       {

        break;

       }

      case "d"://日期

       {

        if (element.value.length != 0 && isDate(element.value) == false) {

               window.alert(discript + "必须输入有效日期!(日期格式:yyyy-mm-dd)")

         element.focus();

         return(0);

        }

           break;

       }

         case "e"://邮件

       {

        if (element.value.length != 0 && isEmail(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

      case "c"://身份证



       {

        if (element.value.length != 0 && cidInfo(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

      case "p"://邮编

       {

        if (element.value.length != 0 && isPostCode(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

   case "m"://移动电话

       {

        if (element.value.length != 0 && isMoveTel(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

   case "ip"://ip地址

       {

        if (element.value.length != 0 && isIP3(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

   case "t"://短时间 (13:04:15)

       {

        if (element.value.length != 0 && isShortTime(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

   case "hour"://小时 

       {

        if (element.value.length != 0 && isHoutTime(element.value) == false) {

               window.alert("请输入有效的" + discript + "格式!")

         element.focus();

         return(0);

        }

           break;

       }    

   case "minute"://分钟 

       {

        if (element.value.length != 0 && isMinuteTime(element.value) == false) {

               window.alert("请输入有效的" + discript + "格式!")

         element.focus();

         return(0);

        }

           break;

       }           

   case "phone"://电话号码

       {

        if (element.value.length != 0 && PhonesCheck(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }

      case "quhao"://电话号码(区号+电话)

       {

        if (element.value.length != 0 && PhonesQHCheck(element.value) == false) {

               window.alert("请输入有效的" + discript + "! (格式:区号-电话)")

         element.focus();

         return(0);

        }

           break;

       } 

      case "simpleP"://简单电话号码(数字,'(',')','-')

       {

        if (element.value.length != 0 && SimplePhone(element.value) == false) {

               window.alert("请输入有效的" + discript + "!")

         element.focus();

         return(0);

        }

           break;

       }       

       

     }

    }



    if (length != "" && type != "d") {

        if (lengthCheck(element.value, length)) {

         window.alert(discript + "的长度必须小于" + length/2 + "个汉字!" + length + "个字符!");

         element.focus();

         return(0);

     }

    }



    if (maxs != "" && mins != "") 

 {

  if(type =="s")

  {

   if (lenInFact(element)<mins || lenInFact(element)>maxs) 

   {

    window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字!" + maxs + "个字符, 大于" + mins/2 + "个汉字!" + mins + "个字符!");

    element.focus();

    return(0);

   }

  }

  else

  {

   if (element.value < mins || element.value > maxs) 

   {

    window.alert(discript + "的值必须小于" + maxs + ", 大于" + mins + "!");

    element.focus();

    return(0);

   }

  }

    } 

 else 

 {

        if (maxs != "") 

  {

   if(type =="s")

   {

          if (lenInFact(element)> maxs) 

    {

              window.alert(discript + "的长度必须小于" + maxs/2 + "个汉字" + maxs + "个字符!");

           element.focus();

           return(0);

          }

      }

      else

      {

       if (element.value > maxs) 

    {

              window.alert(discript + "的值必须小于" + maxs + "!");

           element.focus();

           return(0);

          }

      }

      

        }

        if (mins != "") 

  {

   if(type =="s")

   {

          if (lenInFact(element) < mins) 

    {

              window.alert(discript + "的长度必须大于" +mins/2 + "个汉字" + mins + "个字符!");

           element.focus();

           return(0);

          }

      }

      else

      {

       if (element.value < mins) 

    {

              window.alert(discript + "的值必须大于" + mins + "!");

           element.focus();

           return(0);

          }

      }

        }

    }



    return(1);

}

//电话号码的验证



//要求:

  //(1)电话号码由数字、"("、")"和"-"构成

  //(2)电话号码为3到8位

  //(3)如果电话号码中包含有区号,那么区号为三位或四位

  //(4)区号用"("、")"或"-"和其他部分隔开

  //(5)移动电话号码为11或12位,如果为12位,那么第一位为0

  //(6)11位移动电话号码的第一位和第二位为"13"

  //(7)12位移动电话号码的第二位和第三位为"13"

  //根据这几条规则,可以与出以下正则表达式:

  //(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)

function PhoneCheck(s) {

 var str=s;

 var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/

 

 //var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^/([0-9]{3,4}/)[0-9]{3,8}$)|(^0{0,1}1[3,5][0-9]{9}$)/ 

 

 if(reg.test(str)){

  return true;

 }

 else{

  return false;

 }

}



function PhonesCheck(s) {

 var str=s;

 var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}13[/d]{9}$)|(^0{0,1}159[/d]{8}$)/;

 

 //var reg=/(^(/([/d]{3,4}/)|[/d]{3,4}/-){0,1}[/d]{3,8}(/([/d]{1,4}/)|/-[/d]{1,4}){0,1}$)|(^0{0,1}1[3,5][/d]{9}$)/;

  

 if(reg.test(str)){

  return true;

 }

 else{

  return false;

 }

}



function PhonesQHCheck(s) {

 var str=s;

 

 var reg=/(^[0-9]{3,4}/-[0-9]{3,8}$)/

  

 if(reg.test(str)){

  return true;

 }

 else{

  return false;

 }

}



function SimplePhone(str){

 var count;

 var numflag;

 for(count = 0; count < str.length; count++){

  numchar = str.charAt(count);

  numflag = 0;

        if(numchar == "(" || numchar == ")" || numchar == "-" ){

   numflag = 1;

  }else{

   numvalue = numchar - '0';

      if (numvalue >= 0 && numvalue <= 9){

    numflag = 1;

   }

  }

  if(numflag == 0){

   return false;

  }

 }

 return true;

}



 





//移动电话(手机)

//样式:13531214732或013531214732

function isMoveTel(elem){

 var pattern=/(^0{0,1}13[0-9]{9}$)|(^0{0,1}159[/d]{8}$)/;

 if(pattern.test(elem)){

  return true;

 }else{

  //elert("电话号码不正确");

  return false;

 }

}



//验证IP地址

function isIP3(elem){

  var pattern=/(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])/;

  if(pattern.test(elem)){

    return true;

  }else{

 //alert("ip格式不正确");

    return false;

  }

 }



//短时间(形如:  13:04:06)

//更具弹性的正则表达式:/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/

function isShortTime(elem){

 var pattern=/^([0-9]{1,2})(:)([0-9]{1,2})(:)([0-9]{1,2})$/;

 var temp=elem.match(pattern);

 if(temp==null)

  return false;

 if(temp[1]>=24)

  return false;

 if(temp[3]>=60)

  return false;

 if(temp[5]>=60)

  return false;

 return true;

}

function isHoutTime(elem){

 var pattern=/^([0-9]{1,2})$/;

 var temp=elem.match(pattern);

 if(temp==null)

  return false;

 if(temp[1]>=24)

  return false;

 return true;

}

function isMinuteTime(elem){

 var pattern=/^([0-9]{1,2})$/;

 var temp=elem.match(pattern);

 if(temp==null)

  return false;

 if(temp[1]>=60)

  return false;

 return true;

}

//判断是否整数

function isInteger(integer) {

    var count;

    var numchar;

    var numvalue;

    for (count = 0; count < integer.length; count++) {

     numchar = integer.charAt(count);

     numvalue = numchar - '0';

     if (!(numvalue >= 0 && numvalue <= 9))

      return false;

    }

    return true;

}



//判断是否有效邮件

function isEmail(mail) {

    if (killSpace(mail) == "") return false;



 var v_email = mail.substring(mail.indexOf("@") + 1)

 if ( (mail.indexOf("@") == -1) ||

              (mail.indexOf("@") == 0)  ||

               (mail.indexOf("@") != mail.lastIndexOf("@")) ||

                 (v_email.indexOf(".") == -1)  ||

                    (v_email.indexOf(".") == 0) ||

                     ((mail.indexOf(".") + 1) == mail.length) ) {

  return false;

 }

 return true;

}



//身份证简单验证,单纯的位数验证

function isIdCard(idcard){

 var re = /^[/d]{15}|[/d]{18}|[/d]{17}[Xx]$/;

 if(re.test(idcard)){

  //alert("验证通过!");

  return true;

 }

 else{

  //alert("身份证号码错误!");

  return false;

 }

}



//身份证严格验证,包括地区验证、生日验证和校验位验证

//18位公民身份证号码的编排规则:

//身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

//排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其含义如下:

//1. 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码。(本函数只对省级地区进行检验)

//2. 出生日期码:表示编码对象出生的年、月、日,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。(出生日期合法性检验)

//3. 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

//校验的计算方式:

//  1. 对前17位数字本体码加权求和

//  公式为:S = Sum(Ai * Wi), i = 0, ... , 16

//  其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

//  2. 以11对计算结果取模

//  Y = mod(S, 11)

//  3. 根据模的值得到对应的校验码

//  对应关系为:

//     Y值: 0 1 2 3 4 5 6 7 8 9 10

//  校验码: 1 0 X 9 8 7 6 5 4 3 2

function cidInfo(idcard){

 var Errors = new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");

 var area = {11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}

 var idcard,Y,JYM;

 var S,M;

 var idcard_array = new Array();

 idcard_array = idcard.split("");



 //地区检验

 if(area[parseInt(idcard.substr(0,2))]==null) {

  //alert(Errors[4]);

  return false;

 }



 //身份号码位数、出生日期的合法性检查及格式检验

 switch(idcard.length){

  case 15:

   //15位身份号码检测

   if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){

    ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//闰年出生日期的合法性正则表达式

   } 

   else {

    ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//平年出生日期的合法性正则表达式

   }



   if(ereg.test(idcard)){

    //alert(Errors[0]);

    return true;

   }

   else{ 

    //alert(Errors[2]);

    return false;

   }

   break;

  

  case 18:

   //18位身份号码检测

   if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){

    ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式

   } 

   else {

    ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式

   }



   //测试出生日期的合法性

   if(ereg.test(idcard)){

    //计算校验位

    S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ;

    Y = S % 11;

    M = "F";

    JYM = "10X98765432";

    M = JYM.substr(Y,1);

    

    //判断校验位

    if(M == idcard_array[17].toUpperCase()){ 

     //alert(Errors[0]); 

     return true;

    }

    else{

     //alert(Errors[3]);

     return false;

    }

   }

   else{

    //alert(Errors[2]);

    return false;

   }

   break;



  default:

   //alert(Errors[1]);

   return false;

   break;

 }

}





//判断是否为邮编



function isPostCode(postCode) {

    var v_postCode = killSpace(postCode);

    if (v_postCode == "") return false;



    if (v_postCode.length != 6) {

        //alert("邮政编码必须为6位数字!");

        return false;

    }



    if (!isInteger(v_postCode)) {

        //alert("邮政编码必须全部为数字!");

        return false;

    }else {

        return true;

    }

}



/**

* 调用此函数校验日期。



* @param s         输入日期string s,如2001-01-01

* @return          若输入的日期没有包含非法字符,以及该日期合法,则返回true;否则返回false

*/

function isDate(s) {

    if (s.length != 10 || (s.charAt(4) != '-' && s.charAt(4) != '/') || (s.charAt(7) != '-' && s.charAt(7) != '/'))

     return false;

    if (!isInteger(s.substring(0, 4)) || !isInteger(s.substring(5, 7)) || !isInteger(s.substring(8, 10)) || eval(s.substring(0, 4)) < 1 || eval(s.substring(5, 7)) < 1 || eval(s.substring(8, 10)) < 1)

     return false;

    if (checkDate(s.substring(0, 4), s.substring(5, 7), s.substring(8, 10)) == false)

     return false;

    return true;

}



//检验日期是否合法



function checkDate(year, month, day) {

    var iyear;

    var imonth;

    var iday;

    if(year.length != 4 || month.length != 2 || day.length != 2)

     return false;

    if (!isInteger(year) || !isInteger(month) || !isInteger(day))

     return false;

    iyear = getValueOfInt(year);

    imonth = getValueOfInt(month);

    iday = getValueOfInt(day);

    if (imonth < 1 || imonth > 12) return false;

    switch(imonth) {

     case 1:

     case 3:

     case 5:

     case 7:

     case 8:

     case 10:

     case 12:

      if (iday > 31) return false;

       break;

     case 4:

     case 6:

     case 9:

     case 11:

      if (iday > 30) return false;

      break;

     default:

      if(mod(iyear, 4) == 0 && (mod(iyear, 100) != 0 || mod(iyear, 400) == 0)) {//判断是否润年

       if (iday > 29) return false;

      }else {

       if (iday > 28) return false;

      }

    }

 return true;

}



//取得输入字符串所代表的整数值



function getValueOfInt(string) {

    var count;

    var numchar;

    var numvalue;

    var value;

    value = 0;

    for ( count = 0; count < string.length; count++) {

     numchar = string.charAt(count);

     numvalue = numchar - '0';

     value = value * 10 + numvalue;

    }

    return value;

}



var e_tag; //当前正在分拆得Tag值





//开始解析分拆Tag值



function parseTag(p_tag) {

 e_tag = p_tag.substring (p_tag.indexOf("'")+1,p_tag.lastIndexOf ("'"));

}



//得到下一个分拆处理的值



function getNextValue() {

 if(e_tag == null || e_tag == "")

  return null;

 var p = e_tag.indexOf("|");

 if(p == -1)

  p = e_tag.length;

 var r = e_tag.substring(0,p);

 e_tag = e_tag.substring(p + 1, e_tag.length);

 return r;

}



//删除空格处理,供checkValidate调用

function killSpace(x) {

    while ((x.length > 0) && (x.charAt(0) == ' '))

     x = x.substring(1, x.length)

    while ((x.length > 0) && (x.charAt(x.length - 1) == ' '))

     x = x.substring(0, x.length - 1)

    return x;

}



//计算中文长度

function count_char(str) {

 var len = 0;

 for(i = 0; i < str.length; i++) {

  var ech = escape(str.charAt(i));

  if ( ech.length > 4 ){

//   len++;



 修改下面的数字,len + 1 表示2个字符代表一个中文字,len + 5 表示6个字符代表一个中文字

   len = len + 1;



/*

   if (ech>"%u07ff")

    len++;

*/

  }

  len ++;

 }

 return len;

}



//检查输入的内容是否超过指定的长度



function lengthCheck(text, size) {

 var len = count_char(text);

 if ( len > size ) {

        return true;

 }

 return false;

}





function mod(var1,var2) {

    return (var1%var2);

}





function getNetuiTagName(id) {

   return netui_names[id];

}



function getNetuiTagName(id, tag)

{

   var scopeId = getScopeId(tag);

   if (scopeId == "")

      return netui_names[id];

   else

      return netui_names[scopeId  + "__" + id];

}



function getScopeId(tag)

{

   if (tag == null)

      return "";

   if (tag.scopeId != null)

      return tag.scopeId;

   return getScopeId(tag.parentElement);

}



function disableAllButton(p_frm) {

 var eCount = p_frm.elements.length;

 for(var i = 0; i < eCount; i++) {

  var e=p_frm.elements[i];

  if (e.type=="button" || e.type=="submit"){

   e.disabled=true;

  }

 }

 return true;

}

function checkNumber(obj,num){ //过滤掉数字以外的键,48-57是数字键,46是".",num是小数点后几位



    if (event.keyCode==46){

        if (obj.value.length<=0){ //如果第一个键是".",屏蔽掉



            event.keyCode=0;

   return;

            }//end if

        else {

            for (var n=0;n<obj.value.length;n++){ //如果"."过多,屏蔽掉



                if (obj.value.substring(n,n+1)=="."){

                    event.keyCode=0;

     

                    return;

                    }//end if

                }//end for n

            return ;

            }//end else

        }//end if

    if (event.keyCode<48 || event.keyCode>57){  //过滤其他键



        event.keyCode=0;

  return;

        }

    else{                                        //控制小数点后位数

        for (var n=0;n<obj.value.length;n++){

            if (obj.value.substring(n,n+1)=="."){

                if ((obj.value.length-n)>num){

                    event.keyCode=0;

        return;     

                    }//end if

                }//end if

            }//end for n

        }

}

function checkBer(obj,num){   //控制字符输入长度

   for (var n=0;n<obj.value.length;n++){

                if ((obj.value.length-n)>=num){

                    event.keyCode=0;

                    return;

                    }//end if

            }//end for n

}



function lenInFact(obj,maxLen)

{

    var c;var len=0;var j=0;

    for(var i=0;i<obj.value.length;i++)

    {

       c=escape(obj.value.charAt(i));   

       if(c.length>4)    

       {

         len=len+2;

       }

       else

       {

         len++;

       }

       

       if(len>maxLen)    

       {

          j=i-1;

          break;

       }

    }

    return j;

}



function lenInFact(obj)

{

    var c;

    var len=0;

    for(var i=0;i<obj.value.length;i++)

    {

       c=escape(obj.value.charAt(i));   

       if(c.length>4)    

       {

         len=len+2;

       }

       else

       {

         len++;

       }

    }

    return len;

}

//区间日期检查

function checkdate(date1,date2)

{

 if(date1.value != "" && date2.value !="" && date1.value > date2.value)

    {

        alert("起始时间应小于或等于截止时间!");

        return false;

    }

 return true;

}





function checkTextLength(obj,num){   //控制TextArea输入长度

    //alert(obj.value.length);

    var maxLen=lenInFact(obj,num);

    //alert(maxLen);

    if(maxLen!=0)      

    {

      obj.value=obj.value.substring(0,maxLen);           

    }           

}



function checkMaxInput(form,maxLen,message,remLen) {

if (form.message.value.length > maxLen)

form.message.value = form.message.value.substring(0, maxLen);

else form.remLen.value = maxLen - form.message.value.length;

}



function checkInput(message,maxLen) {

if (message.value.length > maxLen) // if too long.... trim it!

message.value = message.value.substring(0, maxLen);

// otherwise, update 'characters left' counter

//else remLen.value = maxLen - message.value.length;

}

function checkMaxInput2(message,maxLen,remLen) {

if (message.value.length > maxLen)

message.value = message.value.substring(0, maxLen);

else remLen.value = maxLen - message.value.length;

}

//检查时间范围

function checkDateRange(y1,y2)

{

  

 d1 = getStringToDate(y1.value);

 d2 = getStringToDate(y2.value);

 d1m = d1.getTime();

 d2m = d2.getTime();

 if( d1m > d2m )

 {

  alert("起始时间不能大于终止时间,请重新输入!");

  y1.value = "";

  y2.value = "";

  y1.focus();

  return false;

 }

 return true;

}

function getStringToDate(y1)

{

 year1 = y1.substring(0,y1.indexOf('-'));

 tmpY1 = y1.substring(y1.indexOf('-') + 1,y1.length);

 month1 = tmpY1.substring(0,tmpY1.indexOf('-'));

 day1 = tmpY1.substring(tmpY1.indexOf('-') + 1, tmpY1.length);

 return new Date(year1, month1, day1, 0, 0, 0, 0);

}

function processSubmit(obj){

  obj.disabled=true;  

  if(checkAll(obj.form)){ 

    obj.form.submit();

  }else {

    obj.disabled=false;

  }

} 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值