一个通用的javascript验证的函数类

/**

 * <p>Title: </p>

 * <p>Description:Javascript公用函数库</p>

 * <p>Copyright: Copyright (c) 2003</p>

 * <p>Company: szkingdom </p>

 * @author 陈剑英

 * @version 1.0

 */

 

 

/**

 *@一个通用的javascript验证的函数类

 *@同过它的一个对象可以访问该类定义的所有方法

 */

function valid(thisform)

{

 this.form = thisform;

 this.isnull = isnull;

 this.chkemail = chkemail;

 this.length_less = length_less;

 this.length_more=length_more;

 this.isnumber = isnumber;

 this.checkselect = checkselect;

 this.del = del;

 this.disObj = disObj;

 this.waitObj = waitObj;

 this.isPhone = isPhone;

 this.isMobile = isMobile;

 this.isAddress = isAddress;

 this.CheckMonth = CheckMonth;

 this.onlyCN = onlyCN;

 this.onlyNum = onlyNum;

 this.compare = compare;

 this.CheckDate = CheckDate;

 this.currencyFormat = currencyFormat;

 this.isIP = isIP;

 this.compareIP = compareIP;

 

}

 

/**

 *@验证一个指定的元素不能为空

 *@obj 组件对象名

 *@lable 组件中文标示

 *@disFocus 是否禁用焦点(该参数可以不提供) 为true则不应用焦点

 */

function isnull(obj,lable,disFocus)

{

 if (trim(this.form[obj].value)== "")

  {

   alert(lable+"不能为空!");

   if(disFocus != true)

    this.form[obj].focus();

   return true

  }

 else

  return false

}

 

/**

 *@验证一个指定的元素的长度不能小于指定的一个长度len

 *@

 */

 

function length_less(obj,lable,len)

{  

    if(this.form[obj].value == "")

  return false;

  

 else if(this.form[obj].value.length < len)

 {

  alert(lable+"的长度不能小于"+len);

  this.form[obj].focus();

  return true

 }

 else

  return false

}

 

/**

 *@验证一个指定的元素的长度不能大于指定的一个长度len

 *@

 */

function length_more(obj,lable,len)

{  

    if(this.form[obj].value == "")

  return false;

  

 else if(this.form[obj].value.length > len)

 {

  alert(lable+"的长度不能大于"+len);

  this.form[obj].focus();

  return true

 }

 else

  return false

}

 

/**

 *@ 验证一个指定的元素必须是数字

 *@

 */

function isnumber(obj,lable)

{

 if(isNaN(this.form[obj].value))

 {

  alert(lable+"的值必须为数字! ");

  this.form[obj].focus();

  return true

 }

 else

  return false

}

 

/**

 *@ 验证一个电子邮件的合法性

 *@

 */

function chkemail(obj)

{

 var checkStr = this.form[obj].value;

     var allValid1 = false;

 var allValid2 = false;

  if (this.form[obj].value.length > 0)

  {

      if (this.form[obj].value.length > 50)

         {

            alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

            this.form[obj].focus();

            return (true);

         }

 

      for (i = 0;  i < checkStr.length; i++)

         {

            ch = checkStr.charAt(i);

            if (ch == '@')

               {

                  allValid1 = true;

                  break;

               }

         }

      for (i = 0;  i < checkStr.length;  i++)

         {

            ch = checkStr.charAt(i);

            if (ch == '.')

               {

                  allValid2 = true;

                  break;

               }

         }

      if (!allValid1)

         {

            alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

            this.form[obj].focus();

            return (true);

         }

      if (!allValid2)

         {

            alert("请输入正确的电子信箱,如www@kingdon.com.cn!");

            this.form[obj].focus();

            return (true);

         }

   } 

 return false

}

 

/**

 *@ 验证一个下拉表是否选择

 *@

 */

function checkselect(obj,lable)//验证

{

 if(this.form[obj].selectedIndex == 0)

 {

  alert("请选择"+lable);

  this.form[obj].focus();

  return true

 }

}

 

 

/**

 *@ 确认删除

 *@

 */

function del()                  

{

 if (confirm("您真的要删除吗?"))

  {

  return(true);

  }

 else

  {

   return(false);

  }

}

 

/**

 *@ 确认取消

 *@

 */

function cancel()                  

{

 if (confirm("您真的要取消吗?"))

  {

  return(true);

  }

 else

  {

   return(false);

  }

}

/**

 *@ 设置list值-- 通用

 *@ 根据list的value值设置对应的选项

 */

 

function set_list(thisform,listname,lx)

  

 for(var i=0; i < thisform[listname].options.length; i++)

 {

  if (lx == thisform[listname].options[i].value)

  {

   thisform[listname].options[i].selected = true

  }

 }

  

}

 

 

//以下为重构时扩充的函数

 

 

/**

 * 使用disable禁止组件

 * @param n

 * @return

 */

function disObj(obj)

{

 this.form[obj].disabled = true; 

}

 

/**

 * 设置鼠标等待

 * @param n

 * @return

 */

function waitObj(obj)

{

 this.form[obj].style.cursor = "wait"; 

}

 

/**

 * 验证小灵通、座机电话和传真

 * @param n

 * @return  

 */

function isPhone(obj,lable)

{

 if(this.form[obj].value == "")

  return false;

 

     var v=this.form[obj].value;

 if(v.search(/^(0[0-9]{2,3}-)?[0-9]{7,10}$/) == -1)

 {

  alert("不是有效的"+lable+"! 输入格式为:028-85210088");

  this.form[obj].focus();

  return true;

 }else

 {

  return false;

 }

}

 

/**

 * 验证手机(不分联通和移动)

 * @param n

 * @return  

 */

function isMobile(obj,lable)

{

 if(this.form[obj].value == "")

  return false;

 

    var v=this.form[obj].value;

 if(v.search(/^13[0-9]{7,10}$/) == -1)

 {

  alert("不是有效的"+lable);

  this.form[obj].focus();

  return true;

 }else

 {

  return false;

 }

}

 

 /**

 * 验证网址格式

 * @param n

 * @return  

 */

function isAddress(obj,lable)

{

 if(this.form[obj].value == "")

  return false;

  

     var v=this.form[obj].value;

     if(v.search(/^(http:)?(www.)?(/w+(-/w+)*/.){1,2}[A-Za-z]{2,3}$/) == -1)

     {

    alert("不是有效的"+lable+" 输入格式为:www.sina.com.cn");

  this.form[obj].focus();

    return true;

 }else

 {

  return false;

 }

}

 

/**

 * 只能输入汉字,用在onkeyup事件中

 * @param n

 */

function onlyCN(obj)

{

    var v = this.form[obj].value;

 this.form[obj].value = v.replace(/[^/u4E00-/u9FA5]/g,'');

}

 

/**

 * 只能输入数字(包括大键盘,小键盘,Tab键,回退键,左右键,回车键)用在onkeydown事件中

 * @param

 * @return  

 */

function onlyNum(){

 if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)

 ||event.keyCode==9||event.keyCode==8||event.keyCode==37||event.keyCode==39||event.keyCode==13)){

  alert("只能输入数字!");

  event.returnValue=false;

 }

}

/**

 * 只能输入数字(包括大键盘,小键盘,Tab键,回退键,左右键,回车键,逗号)用在onkeydown事件中

 * @param

 * @return  

 */

function onlyKey(){

 if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)

 ||event.keyCode==9||event.keyCode==8||event.keyCode==37||event.keyCode==39||event.keyCode==13)){

  alert("只能输入数字!");

  event.returnValue=false;

 }

}

/**

 * 用于年月的验证

 * @param n

 */

function CheckMonth(obj)

{

 if(this.form[obj].value == "")

  return false;

 var strDate=this.form[obj].value;

 var intYear;

 var intMonth;

 var intDay;

 if(strDate.length!=6)

 {

  alert("输入长度不正确,应是六位!");

  this.form[obj].focus();

         return true;

 }

 intYear = parseInt(strDate.substring(0,4),10);

 intMonth = parseInt(strDate.substring(4,6),10);

 if(isNaN(intYear)||isNaN(intMonth))

 { 

         alert("输入的不是数字格式!");

         this.form[obj].focus();

         return true;

  }          

 if(intMonth>12||intMonth<1)

 {

         alert("月份输入错误!"); 

         this.form[obj].focus();

        return true;

 }

 return false;

}

 

/**

 * 去除字符串的前后空格

 * @param str

 * @return  

 */

function trim(str)

{

 var pos = str.length,arrays,result;

 //str=new String();

 

 /******去除字符串的前空格******/

 arrays = str.split("");

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

 {

  if(arrays[i] != " ")

  {

  pos = i;

  break;

      }

 }

 result=str.substring(pos,str.length);

 /******去除字符串的后空格******/

 arrays=result.split("");

 for(var j = result.length-1; j >= 0; j--)

 {

  if(arrays[j] != " ")

  {

   pos = j;

   break;

  }

 }

 result = result.substring(0,pos+1);

 return result;

}

 

/**

 * 比较起始日期和终止日期的大小

 * @param begin,end

 * @return  

 */

function compare(begin,end)

{

 

      if((this.form[begin].value == "")||(this.form[end].value == ""))

  return false;

      var s1=this.form[begin].value;

      var s2=this.form[end].value;

 var intS1 = parseInt(s1);

      var intS2 = parseInt(s2);

      

     if(intS1>intS2)

     {

  alert("日期选择的起始不符!");

  this.form[end].focus();

  return true;

 }

 else

 {

  return false;

 }

}

/**

 * 比较起始IP和终止IP的大小

 * @param begin,end

 * @return  

 */

function compareIP(begin,end)

{

 

      if((this.form[begin].value == "")||(this.form[end].value == ""))

  return false;

      var IP1=this.form[begin].value;

 var IPArr1=IP1.split(".");

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

   {

    if(IPArr1[i]<10)

       IPArr1[i]="00"+IPArr1[i]

    if(IPArr1[i]>9&&IPArr1[i]<100)

       IPArr1[i]="0"+IPArr1[i]

   }

 var s1="";

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

   {

    s1+=IPArr1[i]

   }

 

 var IP2=this.form[end].value;

 var IPArr2=IP2.split(".");

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

   {

    if(IPArr2[i]<10)

       IPArr2[i]="00"+IPArr2[i]

    if(IPArr2[i]>9&&IPArr2[i]<100)

       IPArr2[i]="0"+IPArr2[i]

   }

 var s2="";

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

   {

    s2+=IPArr2[i]

   }

 

 var intS1 = parseInt(s1);

      var intS2 = parseInt(s2);

      

     if(intS1>intS2)

     {

  alert("起始IP不能大于终止IP!");

  this.form[end].focus();

  return true;

 }

 else

 {

  return false;

 }

}

/**

 * 验证年月

 * @param obj

 * @return  

 */

function checkdate(obj)

{

 if(isNaN(obj.value))

 {

  alert("日期必须位数字!")

  obj.select()

 }

}

 

 

 

/** 检查日期格式 **/

 

function CheckDate(obj){

   if(this.form[obj].value == "")

 

     return true;

 

   var intYear;

   var intMonth;

   var intDay;

   var boolLeapYear;

   var strDate=this.form[obj].value;

   if(strDate.length>8){

   //alert("时间格式不对!")

        return false;

   }

   intYear = parseInt(strDate.substring(0,4),10);

   intMonth = parseInt(strDate.substring(4,6),10);

   intDay = parseInt(strDate.substring(6),10);

 

   if(isNaN(intYear)||isNaN(intMonth)||isNaN(intDay)){

        //alert("时间格式不对!")
        this.form[obj].focus();

        return false;

   }          

   if(intMonth>12||intMonth<1){

        //alert("时间格式不对!")
        this.form[obj].focus();
   

        return false;

   }

   if((intMonth==1||intMonth==3||intMonth==5||intMonth==7||intMonth==8||intMonth==10||intMonth==12)&&(intDay>31||intDay<1)){

        //alert("时间格式不对!")           

        return false;

   }

   if((intMonth==4||intMonth==6||intMonth==9||intMonth==11)&&(intDay>30||intDay<1)){

       // alert("时间格式不对!")
       this.form[obj].focus();
       

        return false;

   }              

   if(intMonth==2){

      if(intDay<1){

          //alert("时间格式不对!")           

          return false;

      }          

      boolLeapYear = false;

      if((intYear%100)==0){

         if((intYear%400)==0) boolLeapYear = true;

      }

      else{

         if((intYear%4)==0) boolLeapYear = true;

      }

         

      if(boolLeapYear){

         if(intDay>29){

            //alert("时间格式不对!")
            this.form[obj].focus();
           

            return false;

        }   

      }

      else{

         if(intDay>28){

            //alert("时间格式不对!") 
            this.form[obj].focus();
         

            return false;

         }   

      }

   }

   return true;

}

 

 

/*

调试 from元素的值

*/

function debug_form(thisform)

{

 var str="";

 for(i=0 ; i< thisform.elements.length; i++)

 {

  

  if(thisform.elements[i].value == "")

   tmpp = "****"

  else

   tmpp = thisform.elements[i].value

 

  str += thisform.elements[i].name +"--  " + tmpp +"/n";

 }

 alert(str)

}

 

/**

 *@验证是否是IP地址

 *@是正确的IP返回true,不符合IP格式返回false

 *author:muyl

 */

function isIP(obj,lable)

{

 if(this.form[obj].value == "")

  return false;

 

 var IP=this.form[obj].value;

 var IPArr=IP.split(".");

 if(IPArr.length<4)

 {

  alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

  this.form[obj].focus();

  return false;

 }

 else

 {

  for(i=0;i<4;i++)

  {

   if(isNaN(IPArr[i]))

   {

    alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

    this.form[obj].focus();

    return false;

   }

   else if(IPArr[i]>255)

   {

    alert(lable+"不是正确的IP地址,正确的格式为:192.168.0.10");

    this.form[obj].focus();

    return false;

   }

  }

 }

 return true;

}

 

/**

 *分隔输入框中货币值

 *参数表:input,输入框(this);milSep,千位分隔符;decSep,小数点;event,事件(event)

 *example: <input type=text name=test length=15 onKeyPress="return(currencyFormat(this,',','.',event))">

 *author:muyl

 */

function currencyFormat(input,milSep,decSep,event)

{

 var sep = 0;

 var key = '';

 var i = j = 0;

 var len = len2 = 0;

 var strCheck = '0123456789';

 var aux = aux2 = '';

 var whichCode = (window.Event) ? event.which : event.keyCode;

 if (whichCode == 13) return false;  // Enter

  key = String.fromCharCode(whichCode);  // Get key value from key code

 if (strCheck.indexOf(key) == -1) return false;  // Not a valid key

  len = input.value.length;

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

  if ((input.value.charAt(i) != '0') && (input.value.charAt(i) != decSep)) break;

 aux = '';

 for(; i < len; i++)

  if (strCheck.indexOf(input.value.charAt(i))!=-1) aux += input.value.charAt(i);

 aux += key;

 len = aux.length;

 if (len == 0) input.value = '';

 if (len == 1) input.value = '0'+ decSep + '0' + aux;

 if (len == 2) input.value = '0'+ decSep + aux;

 if (len > 2)

 {

  aux2 = '';

  for (j = 0, i = len - 3; i >= 0; i--)

  {

   if (j == 3)

   {

    aux2 += milSep;

    j = 0;

   }

   aux2 += aux.charAt(i);

   j++;

  }

  input.value = '';

  len2 = aux2.length;

  for (i = len2 - 1; i >= 0; i--)

   input.value += aux2.charAt(i);

  input.value += decSep + aux.substr(len - 2, len);

 }

 return false;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lijun_xiao2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值